使用 kubeadm 创建生产就绪的 Kubernetes 集群

kubeadm 是一个工具,使 Kubernetes 管理员能够快速轻松地引导与认证的 Kubernetes 指南完全兼容的最小可行集群。自 2016 年以来,它一直由SIG 集群生命周期积极开发,我们很高兴地宣布它现在已从 Beta 版毕业到稳定版并普遍可用 (GA)!

kubeadm 的 GA 版本是 Kubernetes 生态系统发展中的一个重要事件,它为一个稳定至关重要的领域带来了稳定性。

kubeadm 的目标是为 Kubernetes 集群设置和管理提供基础实现。kubeadm 附带最佳实践默认值,但也可以进行自定义以支持其他生态系统要求或特定于供应商的方法。kubeadm 旨在易于集成到更大的部署系统和工具中。

kubeadm 的范围

kubeadm 专注于在现有基础设施上引导 Kubernetes 集群并执行一组基本的维护任务。kubeadm 接口的核心非常简单:通过运行kubeadm init创建新的控制平面节点,并通过运行kubeadm join将工作节点加入到控制平面。还包括用于管理已引导的集群的实用程序,例如控制平面升级以及令牌和证书续订。

为了保持 kubeadm 精简、专注且与供应商/基础设施无关,以下任务不在其范围内

  • 基础设施供应
  • 第三方网络
  • 非关键插件,例如用于监控、日志记录和可视化的插件
  • 特定的云提供商集成

例如,基础设施供应留给其他 SIG 集群生命周期项目,例如集群 API。相反,kubeadm 仅涵盖每个 Kubernetes 集群中的共同点:控制平面。用户可以在集群创建之后在 Kubernetes 之上安装他们首选的网络解决方案和其他插件。

kubeadm 的 GA 版本意味着什么

通用可用性对于不同的项目意味着不同的含义。对于 kubeadm,进入 GA 不仅意味着创建符合标准的 Kubernetes 集群的过程现在是稳定的,而且还意味着 kubeadm 足够灵活,可以支持各种部署选项。

我们现在认为 kubeadm 已在以下每个重要领域达到了 GA 级别的成熟度

  • 稳定的命令行用户体验 --- kubeadm CLI 符合#5a Kubernetes 弃用策略的 GA 规则,该规则规定,GA 版本中存在的命令或标志必须在弃用后至少保留 12 个月。
  • 稳定的底层实现 --- kubeadm 现在使用不会很快改变的方法创建新的 Kubernetes 集群。例如,控制平面作为一组静态 Pod 运行,引导令牌用于kubeadm join流程,并且ComponentConfig用于配置kubelet
  • 配置文件架构 --- 使用新的 v1beta1 API 版本,您现在可以声明式地调整集群的几乎每个部分,从而围绕 kubeadm 构建的集群构建一个“GitOps”流程。在未来的版本中,我们计划将 API 升级到 v1 版本,并进行最少的更改(甚至可能没有)。
  • kubeadm 的“工具箱”接口 --- 也称为 phases。如果您不想执行所有 kubeadm init 任务,则可以使用 kubeadm init phase 命令应用更精细的操作(例如,生成证书或控制平面静态 Pod 清单)。
  • 次要版本之间的升级 --- kubeadm upgrade 命令现在已完全 GA。它可以为您处理控制平面升级,其中包括升级到 etcdAPI 服务器控制器管理器调度器。您可以在次要版本或补丁版本之间无缝升级集群(例如 v1.12.2 -> v1.13.1 或 v1.13.1 -> v1.13.3)。
  • etcd 设置 --- etcd 现在以默认安全的方式设置,所有地方都使用 TLS 通信,并且可以在需要时扩展到高可用集群。

谁将从稳定的 kubeadm 中受益

SIG 集群生命周期已确定了一些可能的 kubeadm 用户配置文件,尽管我们预计 GA 版本的 kubeadm 也可以满足许多其他场景。

这是我们的列表

  • 您是一位想要试用 Kubernetes 的新用户。kubeadm 是在Linux 机器上启动和运行的最快方式。如果您在 Mac 或 Windows 工作站上使用Minikube,您实际上已经在 Minikube VM 中运行 kubeadm!
  • 您是一名负责在裸机机器上设置 Kubernetes 的系统管理员,您希望快速创建安全且符合最佳实践但又高度可配置的 Kubernetes 集群。
  • 您是一位希望在其云服务套件中添加 Kubernetes 产品的云提供商。kubeadm 是在底层创建集群的首选工具。
  • 您是一个需要高度定制的 Kubernetes 集群的组织。诸如Amazon EKSGoogle Kubernetes Engine 等现有的公共云产品不适合您;您需要根据您的硬件、安全性、策略和其他需求量身定制的 Kubernetes 集群。
  • 您正在创建比 kubeadm 更高级别的集群创建工具,从头开始构建集群体验,但您不想重新发明轮子。您可以“重新基于”kubeadm,并利用 kubeadm 为您提供的通用引导工具。一些社区工具已采用 kubeadm,并且它与集群 API 实现完美匹配。

所有这些用户都可以从 kubeadm 升级到稳定的 GA 状态中受益。

kubeadm 调查

尽管 kubeadm 已 GA,但 SIG 集群生命周期将继续致力于改进 Kubernetes 集群管理中的用户体验。我们正在发起一项调查,以收集社区对 kubeadm 的反馈,以供未来改进。

调查可在 https://bit.ly/2FPfRiZ 获得。您的参与将非常宝贵!

感谢社区!

如果没有为 SIG 做出贡献的伟大的人们的帮助,此版本是不可能实现的。SIG 集群生命周期要感谢一些重要的 kubeadm 贡献者

姓名组织角色
Tim St. ClairHeptioSIG 联合主席
Robert Bailey谷歌SIG 联合主席
Fabrizio Pandini独立批准人
Lubomir IvanovVMware批准人
Mike Danese谷歌名誉批准人
Ilya DmitrichenkoWeaveworks名誉批准人
Peter Zhao中兴审阅人
Di Xu蚂蚁金服审阅人
Chuck HaHeptio审阅人
Liz FrostHeptio审阅人
Jason DeTiberusHeptio审阅人
Alexander Kanievsky英特尔审阅人
Ross GeorgievVMware审阅人
Yago NobreNubank审阅人

我们还要感谢所有公司使其开发人员能够在 Kubernetes 上工作,并感谢所有以各种方式为使 kubeadm 达到今天的稳定程度做出贡献的其他人员!

关于作者

Lucas Käldström

  • kubeadm 子项目所有者和 SIG 集群生命周期联合主席
  • Kubernetes 上游承包商,过去两年为 Weaveworks 承包
  • CNCF 大使
  • GitHub:luxas

Luc Perkins

  • CNCF 开发倡导者
  • Kubernetes SIG 文档贡献者和 SIG 文档工具 WG 主席
  • GitHub:lucperkins