使用 kubeadm 建立生產就緒的 Kubernetes 叢集
kubeadm 是一種工具,可讓 Kubernetes 管理員快速輕鬆地引導完全符合 Certified Kubernetes 準則的最小可行叢集。自 2016 年以來,它一直在 SIG Cluster Lifecycle 積極開發中,我們很高興地宣佈它已從測試版升級到穩定版並普遍可用 (GA)!
kubeadm 的 GA 版本是 Kubernetes 生態系統發展中的一個重要事件,它為穩定性至關重要的領域帶來了穩定性。
kubeadm 的目標是為 Kubernetes 叢集設定和管理提供基礎實現。kubeadm 附帶了最佳實踐預設值,但也可以進行自定義以支援其他生態系統要求或供應商特定方法。kubeadm 旨在易於整合到大型部署系統和工具中。
kubeadm 的範圍
kubeadm 專注於在現有基礎設施上引導 Kubernetes 叢集並執行一組基本的維護任務。kubeadm 介面的核心非常簡單:透過執行 kubeadm init
建立新的控制平面節點,並透過執行 kubeadm join
將工作節點加入控制平面。還包括用於管理已引導叢集的實用程式,例如控制平面升級以及令牌和證書續訂。
為了讓 kubeadm 保持精簡、專注且與供應商/基礎設施無關,以下任務不在其範圍內
- 基礎設施製備
- 第三方網路
- 非關鍵附加元件,例如用於監控、日誌記錄和視覺化
- 特定的雲提供商整合
例如,基礎設施配置留給了其他 SIG Cluster Lifecycle 專案,例如 Cluster API。相反,kubeadm 僅涵蓋每個 Kubernetes 叢集中的共同點:控制平面。使用者可以在叢集建立
kubeadm GA 版本的意義
普遍可用性對不同的專案意味著不同的事情。對於 kubeadm 來說,達到 GA 意味著建立符合要求的 Kubernetes 叢集的過程現在是穩定的,而且 kubeadm 足夠靈活以支援各種部署選項。
我們現在認為 kubeadm 在以下每個重要領域都達到了 GA 級別的成熟度
- 穩定的命令列使用者體驗 — kubeadm CLI 符合 Kubernetes 棄用策略的 #5a GA 規則,該規則規定 GA 版本中存在的命令或標誌必須在棄用後至少保留 12 個月。
- 穩定的底層實現 — kubeadm 現在使用的方法建立新的 Kubernetes 叢集應該不會很快改變。例如,控制平面作為一組靜態 Pod 執行,引導令牌用於
kubeadm join
流程,並且 ComponentConfig 用於配置 kubelet。 - 配置檔案架構 — 藉助新的 v1beta1 API 版本,您現在可以以宣告方式調整叢集的幾乎每個部分,從而圍繞 kubeadm 構建的叢集構建“GitOps”流程。在未來的版本中,我們計劃以最小的更改(可能沒有更改)將 API 升級到 v1 版本。
- kubeadm 的“工具箱”介面 — 也稱為階段。如果您不想執行所有
kubeadm init
任務,您可以使用kubeadm init phase
命令應用更細粒度的操作(例如生成證書或控制平面 靜態 Pod 清單)。 - 次版本之間的升級 —
kubeadm upgrade
命令現已完全 GA。它為您處理控制平面升級,其中包括對 etcd、API 伺服器、控制器管理器 和 排程器 的升級。您可以在次版本或補丁版本之間無縫升級叢集(例如 v1.12.2 -> v1.13.1 或 v1.13.1 -> v1.13.3)。 - etcd 設定 — etcd 現在以預設安全的方式設定,到處都是 TLS 通訊,並且在需要時允許擴充套件到高可用性叢集。
誰將從穩定的 kubeadm 中受益
SIG Cluster Lifecycle 已經確定了一些可能的 kubeadm 使用者配置檔案,儘管我們預計 GA 狀態的 kubeadm 也能滿足許多其他場景。
以下是我們的列表
- 您是想要嘗試 Kubernetes 的新使用者。kubeadm 是在 Linux 機器上啟動和執行的最快方式。如果您在 Mac 或 Windows 工作站上使用 Minikube,您實際上已經在 Minikube VM 中執行 kubeadm!
- 您是系統管理員,負責在裸機上設定 Kubernetes,並且您希望快速建立安全且符合最佳實踐但又高度可配置的 Kubernetes 叢集。
- 您是雲提供商,希望將 Kubernetes 產品新增到您的雲服務套件中。kubeadm 是用於在低級別建立叢集的首選工具。
- 您是需要高度定製的 Kubernetes 叢集的組織。現有的公共雲產品(如 Amazon EKS 和 Google Kubernetes Engine)無法滿足您的需求;您需要根據您的硬體、安全、策略和其他需求定製 Kubernetes 叢集。
- 您正在建立比 kubeadm 更高層次的叢集建立工具,從頭開始構建叢集體驗,但您不想重複造輪子。您可以“重置”在 kubeadm 之上,並利用 kubeadm 為您提供的通用引導工具。許多社群工具都採用了 kubeadm,它與 Cluster API 實現完美匹配。
所有這些使用者都可以從 kubeadm 升級到穩定的 GA 狀態中受益。
kubeadm 調查
儘管 kubeadm 已達到 GA 狀態,SIG Cluster Lifecycle 將繼續致力於改善管理 Kubernetes 叢集的使用者體驗。我們正在發起一項調查,以收集社群對 kubeadm 的反饋,以期在未來進行改進。
調查可在 https://bit.ly/2FPfRiZ 獲取。您的參與將受到高度重視!
感謝社群!
如果沒有為 SIG 做出貢獻的優秀人員的幫助,這個版本是不可能實現的。SIG Cluster Lifecycle 感謝以下幾位關鍵的 kubeadm 貢獻者:
名稱 | 組織 | 角色 |
---|---|---|
Tim St. Clair | Heptio | SIG 聯合主席 |
Robert Bailey | SIG 聯合主席 | |
Fabrizio Pandini | 獨立 | 審批者 |
Lubomir Ivanov | VMware | 審批者 |
Mike Danese | 榮譽審批者 | |
Ilya Dmitrichenko | Weaveworks | 榮譽審批者 |
Peter Zhao | 中興 | 評審者 |
Di Xu | 螞蟻金服 | 評審者 |
Chuck Ha | Heptio | 評審者 |
Liz Frost | Heptio | 評審者 |
Jason DeTiberus | Heptio | 評審者 |
Alexander Kanievsky | 英特爾 | 評審者 |
Ross Georgiev | VMware | 評審者 |
Yago Nobre | Nubank | 評審者 |
我們還要感謝所有公司,是它們讓其開發人員能夠致力於 Kubernetes 的工作,以及所有以各種方式為使 kubeadm 達到今天穩定狀態做出貢獻的其他人!
關於作者
Lucas Käldström
- kubeadm 子專案負責人和 SIG Cluster Lifecycle 聯合主席
- Kubernetes 上游承包商,過去兩年為 Weaveworks 提供承包服務
- CNCF 大使
- GitHub: luxas
Luc Perkins
- CNCF 開發者倡導者
- Kubernetes SIG Docs 貢獻者和 SIG Docs 工具 WG 主席
- GitHub: lucperkins