可供生產環境使用的 Kubernetes 叢集建立與 kubeadm

kubeadm 是一個工具,讓 Kubernetes 管理員能夠快速且輕鬆地引導最小可行叢集,這些叢集完全符合 Certified Kubernetes 指南。自 2016 年以來,它一直由 SIG Cluster Lifecycle 積極開發,我們很高興地宣布它現在已從 beta 畢業到 stable 並普遍可用 (GA)!

kubeadm 的這個 GA 版本是 Kubernetes 生態系統發展中的重要事件,為穩定性至關重要的領域帶來了穩定性。

kubeadm 的目標是為 Kubernetes 叢集設定和管理提供基礎實作。 kubeadm 隨附最佳實務預設值,但也可以自訂以支援其他生態系統需求或供應商特定的方法。 kubeadm 旨在易於整合到更大的部署系統和工具中。

kubeadm 的範圍

kubeadm 專注於在現有基礎架構上引導 Kubernetes 叢集並執行一組必要的維護任務。 kubeadm 介面的核心非常簡單:透過運行 kubeadm init 創建新的控制平面節點,並透過運行 kubeadm join 將工作節點加入到控制平面。 也包括用於管理已引導叢集的實用程式,例如控制平面升級以及令牌和憑證續訂。

為了保持 kubeadm 的精簡、專注以及供應商/基礎架構不可知,以下任務不在其範圍內

  • 基礎架構佈建
  • 第三方網路
  • 非關鍵附加元件,例如用於監控、日誌記錄和視覺化
  • 特定雲端供應商整合

例如,基礎架構佈建留給其他 SIG Cluster Lifecycle 專案,例如 Cluster API。 相反,kubeadm 僅涵蓋每個 Kubernetes 叢集中的共同點:控制平面。 用戶可以在叢集建立之後在 Kubernetes 之上安裝他們偏好的網路解決方案和其他附加元件。

kubeadm 的 GA 版本意味著什麼

一般可用性對於不同的專案意味著不同的事情。 對於 kubeadm 而言,GA 不僅意味著創建符合規範的 Kubernetes 叢集的過程現在是穩定的,而且 kubeadm 也足夠靈活以支援各種部署選項。

我們現在認為 kubeadm 已在以下每個重要領域中達到 GA 級別的成熟度

  • 穩定的命令列 UX --- kubeadm CLI 符合 Kubernetes 棄用政策的 #5a GA 規則,該規則規定 GA 版本中存在的命令或標誌在棄用後必須至少保留 12 個月。
  • 穩定的底層實作 --- kubeadm 現在使用短期內不應更改的方法創建新的 Kubernetes 叢集。 例如,控制平面作為一組靜態 Pod 運行,bootstrap 令牌用於 kubeadm join 流程,並且 ComponentConfig 用於配置 kubelet
  • 設定檔 schema --- 透過新的 v1beta1 API 版本,您現在可以宣告式地調整叢集的幾乎每個部分,從而在圍繞 kubeadm 建構的叢集建立「GitOps」流程。 在未來的版本中,我們計劃將 API 升級到 v1 版本,並進行最少的更改(甚至可能沒有更改)。
  • kubeadm 的「工具箱」介面 --- 也稱為 phases。 如果您不想執行所有 kubeadm init 任務,則可以使用 kubeadm init phase 命令應用更細緻的操作(例如,產生憑證或控制平面 Static Pod manifests)。
  • 次要版本之間的升級 --- kubeadm upgrade 命令現在已完全 GA。 它為您處理控制平面升級,其中包括升級到 etcdAPI ServerController ManagerScheduler。 您可以在次要版本或修補程式版本之間無縫升級叢集(例如 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 EKSGoogle Kubernetes Engine 無法滿足您的需求; 您需要針對您的硬體、安全性、政策和其他需求量身定制的自訂 Kubernetes 叢集。
  • 您正在創建比 kubeadm 更高層次的叢集創建工具,從頭開始構建叢集體驗,但您不想重新發明輪子。 您可以「rebase」在 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. ClairHeptioSIG 聯合主席
Robert BaileyGoogleSIG 聯合主席
Fabrizio Pandini獨立核准者
Lubomir IvanovVMware核准者
Mike DaneseGoogle榮譽核准者
Ilya DmitrichenkoWeaveworks榮譽核准者
Peter ZhaoZTE審閱者
Di XuAnt Financial審閱者
Chuck HaHeptio審閱者
Liz FrostHeptio審閱者
Jason DeTiberusHeptio審閱者
Alexander KanievskyIntel審閱者
Ross GeorgievVMware審閱者
Yago NobreNubank審閱者

我們還要感謝所有公司,是他們讓開發人員能夠從事 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