使用 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