
我想知道如何在我的 Ubuntu 20 DPS 上設定 kubernetes 叢集我的意思是,我已經安裝了 docker 和 kubeadm 我知道如何進行部署、服務和少量入口,我使用了一個已經配置的 kubernetes 叢集(aks)
我需要設定我的 dps 來公開一些 Web 應用程式(網站、api、cdn 等),而設定 kubernetes 需要執行哪些步驟?如何在特定子 DNS 上公開某個網站(例如第三層網域:trd.mysite.com)
我需要安裝一些插件,如 nginx-controller、metallb 和 flannel 嗎?我不明白這些網路的東西,我也對課程/教程感興趣,請幫助我,謝謝!
編輯:這些是我的yaml,現在我只想在主域(xxxx.com)上公開一個web 應用程序,然後我將添加一個內部REST api 和另一個將使用其餘api 並在第三級域上公開的web 應用程式( yyy.xxxxx.com) http://www.mediafire.com/file/c7qwouqri441wek/Kube.zip/file
答案1
好吧,那麼看吧。為了能夠成功運行伺服器,您將需要:
1. 泊塢窗
2.如果您喜歡使用安裝庫貝德姆- 您需要以下 Kubernetes 軟體套件。我們在這個答案中僅討論 kubeadm 方式。請參閱內部文件本身以取得其他工具。
否則你可以使用例如迷你庫貝,庫貝噴霧,種類。我喜歡minikube,很善良。
- kind 是一個使用 Docker 容器「節點」來運行本地 Kubernetes 叢集的工具。 kind 主要是為了測試 Kubernetes 本身而設計的,但也可以用於本地開發或 CI。
- MiniKube 通常是當有人想要開始時發現的第一個 Kubernetes 技術(Kubernetes 官方文件提供了使用 miniKube 部署第一個叢集的教學)。這是一個非常簡單的解決方案,可以安裝在筆記型電腦上,並且專為學習和測試而設計。啟動時,它將部署一個單節點叢集(最小規模)。
您可以在此處閱讀有關所有工具的資訊:
3. CNI- 用於集群內正確的網路。
CNI 插件有幾十個,你應該選擇一些。
- 完整列表在這裡:叢集群組網
- 比較表:https://kubedex.com/kubernetes-network-plugins/
最受歡迎的是法蘭絨和印花布。有時(取決於您的需求),您可以安裝運河。簡而言之 - 您正在同時安裝 Calico網路政策+ Flannel 作為網路的常規 CNI。
這是重要提示!要正確安裝 CNI - 您應該在建立叢集之前提前選擇它。那是因為您必須使用正確的--pod-network-cidr=
標誌來初始化叢集。
kubeadm init --pod-network-cidr=10.244.0.0/16
用於法蘭絨kubeadm init --pod-network-cidr=192.168.0.0/16
對於印花布
管理對叢集中服務的外部存取的 API 對象,通常是 HTTP。
Ingress 可以提供負載平衡、SSL 終止和基於名稱的虛擬託管。
為了使 Ingress 資源正常運作,叢集必須有一個入口控制器跑步。
最受歡迎的:Nginx 入口控制器、Kubernetes 入口控制器(OOB,也是基於 nginx。但這些是不同的)、Traefik
建立集群的步驟:
- 您可以使用以下優秀文章單節點 Kubernetes 設定。從它開始 - 它會正確地向您顯示所有步驟。
- 你可以使用我的答案:Kubernetes api 伺服器未在單一 kubeadm 叢集上啟動。此答案為您提供如何使用 kubeadm 啟動叢集的詳細逐步說明。一張紙條。
- 官方文件:使用 kubeadm 建立集群
您應該取消 master 的污染,以便可以在其上運行 pod。如果沒有這個,你將無法在你的 master 上運行 pod。
kubectl taint nodes --all node-role.kubernetes.io/master-
答案2
在閱讀所有內容之前,請研究 kubespray,它使用 ansbile 為您創建集群,但是如果您想了解 kubernetes 在幕後如何工作,請遵循答案的其餘部分。
設定 kubernetes 叢集的第一步是了解元件及其工作原理,
僅安裝 kubeadm 不會啟動叢集,您應該在部署 yaml 檔案之前安裝滿足您需求的每個元件。
這是一個 github 頁面鏈接,它使用 kubeadm 來啟動整個 kubernetes 集群,其中包含 3 個主節點和任意數量的工作節點。
注意:它使用舊版本,但對於學習 kubernetes 元件來說是一個很好的參考。確保檢查有關重要集群組件的 yaml 創建的腳本,並閱讀集群組件的詳細資訊以了解其功能。
https://github.com/cookeem/kubeadm-ha/blob/master/v1.11/README.md
如果您想在網域上的叢集上公開 Web 應用程序,您需要安裝入口控制器管理器,它允許您建立入口資源。
這是來自 kubernetes 文件的 ingress yaml 範例
https://kubernetes.io/docs/concepts/services-networking/ingress/
如果您想使用有效的憑證進行 https 操作,您可以使用 kubernetes Secrets 或在叢集上設定憑證管理員以自動進行加密取得和續訂,
這兩個選項都有詳細記錄,您所需要做的就是進行google搜尋以找到如何製作您的入口資源使用這些憑證
確保您的網域指向一個叢集節點(工作節點或主節點)的公共 IP 位址
Metallb 與本地叢集一起使用,以提供雲端提供者內建的負載平衡器服務類型
flannel 是一個為叢集提供網路的網路插件,
如果您希望 pod 能夠相互通信,您應該有一個網路插件 cni,例如 flannel、calico 或任何其他支援的插件,
將 flannel 視為叢集的網路交換機