本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
在 Cluster API 中引入 ClusterClass 和託管拓撲
Cluster API 社群很高興地宣佈實現 ClusterClass 和託管拓撲,這是一項新功能,將極大地簡化您以宣告方式配置、升級和操作多個 Kubernetes 叢集的方式。
一點背景資訊……
在深入瞭解細節之前,讓我們回顧一下 Cluster API 的歷史。
Cluster API 專案始於三年前,最初的版本側重於可擴充套件性以及實現一個宣告性 API,該 API 允許跨基礎設施提供商實現無縫體驗。這在許多雲提供商中取得了成功:AWS、Azure、Digital Ocean、GCP、Metal3、vSphere 等等。
解決了可擴充套件性問題後,重心轉向了功能,例如自動控制平面和 etcd 管理、基於健康的機器修復、機器滾動策略等等。
快進到 2021 年,隨著許多公司使用 Cluster API 來管理在生產中執行工作負載的 Kubernetes 叢集,社群將其精力集中在程式碼、API、文件的穩定性以及為 Kubernetes 版本提供資訊的廣泛測試訊號上。
有了堅實的基礎,以及一個充滿活力和熱情且仍在不斷壯大的社群,是時候為新使用者和高階使用者規劃另一個使用者體驗迭代了。
ClusterClass 和託管拓撲隆重登場!
ClusterClass
顧名思義,ClusterClass 和託管拓撲分為兩部分。
ClusterClass 背後的理念很簡單:一次定義叢集的形狀,並多次重用它,從而抽象掉 Kubernetes 叢集的複雜性和內部結構。
ClusterClass 的核心是一組叢集和機器模板。您可以將其用作“圖章”,可用於建立許多形狀相似的叢集。
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: ClusterClass
metadata:
name: my-amazing-cluster-class
spec:
controlPlane:
ref:
apiVersion: controlplane.cluster.x-k8s.io/v1beta1
kind: KubeadmControlPlaneTemplate
name: high-availability-control-plane
machineInfrastructure:
ref:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DockerMachineTemplate
name: control-plane-machine
workers:
machineDeployments:
- class: type1-workers
template:
bootstrap:
ref:
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
kind: KubeadmConfigTemplate
name: type1-bootstrap
infrastructure:
ref:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DockerMachineTemplate
name: type1-machine
- class: type2-workers
template:
bootstrap:
ref:
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
kind: KubeadmConfigTemplate
name: type2-bootstrap
infrastructure:
ref:
kind: DockerMachineTemplate
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
name: type2-machine
infrastructure:
ref:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DockerClusterTemplate
name: cluster-infrastructure
可能性是無限的;您可以從社群獲得預設的 ClusterClass,從您選擇的供應商處獲得“現成”的類,從您公司的平臺管理員處獲得“認證”的類,甚至可以為高階場景建立自定義類。
託管拓撲
託管拓撲讓您能夠將 ClusterClass 的強大功能付諸實踐。
給定一個 ClusterClass,您可以透過提供單個資源(即叢集)來建立許多形狀相似的叢集。
這是一個示例
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: my-amazing-cluster
namespace: bar
spec:
topology: # define a managed topology
class: my-amazing-cluster-class # use the ClusterClass mentioned earlier
version: v1.21.2
controlPlane:
replicas: 3
workers:
machineDeployments:
- class: type1-workers
name: big-pool-of-machines
replicas: 5
- class: type2-workers
name: small-pool-of-machines
replicas: 1
但它不僅僅是簡化了叢集建立。現在,叢集充當整個拓撲的單一控制點。
Cluster API 的所有強大功能、可擴充套件性、生命週期自動化、穩定性以及管理您選擇的基礎設施提供商上的企業級 Kubernetes 叢集所需的所有功能現在都觸手可及:您可以建立叢集、新增新機器、升級到下一個 Kubernetes 版本,所有這些都可以在一個地方完成。
它就像看起來一樣簡單!
接下來是什麼
雖然出色的 Cluster API 社群正在努力在今年晚些時候釋出 ClusterClass 和託管拓撲的第一個版本,但我們已經期待著該專案及其生態系統的下一步發展。
前方有許多偉大的想法和機遇!
我們希望使託管拓撲更加強大和靈活,允許使用者根據叢集的特定需求動態更改 ClusterClass 的部分內容;這將確保相同的簡單直觀的使用者體驗,以解決複雜的問題,例如為特定 Kubernetes 版本和特定基礎設施提供商區域選擇機器映象,或在整個叢集中注入代理配置等等。
請繼續關注接下來的內容,如果您有任何問題、意見或建議
- 在 Kubernetes Slack 上與我們聊天:#cluster-api
- 加入 SIG Cluster Lifecycle Google Group 以接收日曆邀請並訪問文件
- 每週三太平洋時間上午 10:00 加入我們的 Zoom 會議
- 檢視 Cluster API 手冊中 Docker 提供商 (CAPD) 的 ClusterClass 快速入門。
- 更新:檢視 Cluster API 手冊中 ClusterClass 實驗功能文件。