本文发布已超过一年。较早的文章可能包含过时内容。请检查页面中的信息自发布以来是否仍正确无误。
在 Cluster API 中引入 ClusterClass 和托管拓扑
Cluster API 社区很高兴宣布实现 ClusterClass 和 Managed Topologies,这项新特性将极大简化以声明式方式供应、升级和运维多个 Kubernetes 集群。
一点背景信息…
在深入细节之前,让我们先回顾一下 Cluster API 的历史。
Cluster API 项目始于三年前,其首个版本专注于可扩展性以及实现声明式 API,以实现跨基础设施提供商的无缝体验。这在许多云提供商中取得了成功:AWS、Azure、Digital Ocean、GCP、Metal3、vSphere 等等,还在不断增加中。
在解决了可扩展性之后,重点转向了特性,例如自动控制平面和 etcd 管理、基于健康状态的机器修复、机器发布策略等等。
快进到 2021 年,随着许多公司使用 Cluster API 管理在生产环境中运行工作负载的 Kubernetes 集群,社区将其精力集中在代码、API、文档的稳定性以及为 Kubernetes 版本发布提供信息的广泛测试信号上。
在坚实的基础和持续发展、充满活力且热情的社区支持下,是时候为新用户和高级用户规划用户体验的另一次迭代了。
隆重推出 ClusterClass 和 Managed Topologies,当当!
ClusterClass
顾名思义,ClusterClass 和 managed topologies 由两部分组成。
ClusterClass 背后的想法很简单:一次定义集群的形态,然后多次重用,从而抽象化 Kubernetes 集群的复杂性和内部细节。
ClusterClass 的核心是一系列 Cluster 和 Machine 模板的集合。您可以将其用作一个“印章”,用于创建许多具有相似形态的集群。
---
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,从您选择的供应商那里获得“现成”的类,从公司平台管理员那里获得“认证”的类,甚至为高级场景创建自定义类。
Managed Topologies
Managed Topologies 让您将 ClusterClass 的强大功能付诸实践。
给定一个 ClusterClass,您可以通过提供单个资源(即 Cluster)来创建许多具有相似形态的集群。
这里有一个示例
---
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 作为您整个拓扑结构的单一控制点。
Cluster API 的所有强大功能,包括可扩展性、生命周期自动化、稳定性以及在您选择的基础设施提供商上管理企业级 Kubernetes 集群所需的所有特性,现在都触手可及:您可以创建 Cluster、添加新机器、升级到下一个 Kubernetes 版本,所有这些都可以在一个地方完成。
就像看起来一样简单!
下一步
虽然令人惊叹的 Cluster API 社区正在努力工作,以便在今年晚些时候交付 ClusterClass 和 managed topologies 的第一个版本,但我们已经开始展望项目及其生态系统的下一步发展。
未来还有很多很棒的想法和机会!
我们希望让 managed topologies 更加强大和灵活,允许用户根据 Cluster 的具体需求动态更改 ClusterClass 的某些部分;这将确保在解决复杂问题时(例如,为特定 Kubernetes 版本和基础设施提供商的特定区域选择机器镜像,或在整个集群中注入代理配置等)保持同样简单直观的用户体验。
敬请关注下一步动态,如果您有任何问题、意见或建议:
- 在 Kubernetes Slack 上与我们聊天:#cluster-api
- 加入 SIG Cluster Lifecycle Google Group 以接收日历邀请并获取文档访问权限
- 加入我们的 Zoom 会议,每周三太平洋时间 10:00
- 查看 Cluster API 手册中 Docker 提供商 (CAPD) 的 ClusterClass 快速入门。
- 更新:查看 Cluster API 手册中 ClusterClass 实验性特性文档。