使用 kubeadm 创建生产级 Kubernetes 集群

kubeadm 是一个工具,使 Kubernetes 管理员能够快速轻松地引导完全符合 认证 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 发布意味着什么

普遍可用 (GA) 对于不同的项目有不同的含义。对于 kubeadm 而言,进入 GA 不仅意味着创建符合规范的 Kubernetes 集群的过程现已稳定,还意味着 kubeadm 足够灵活,可以支持多种部署选项。

我们认为 kubeadm 在以下重要领域已达到 GA 级成熟度:

  • 稳定的命令行用户体验 (UX) --- kubeadm CLI 符合 Kubernetes 弃用策略的第 5a 条 GA 规则,该规则规定 GA 版本中存在的命令或标志在弃用后必须保留至少 12 个月。
  • 稳定的底层实现 --- kubeadm 现在使用不久后不会改变的方法创建新的 Kubernetes 集群。例如,控制平面作为一组静态 Pods 运行,引导令牌用于 kubeadm join 流程,而 ComponentConfig 用于配置 kubelet
  • 配置文件 schema --- 借助新的 v1beta1 API 版本,您现在可以以声明式方式调整集群的几乎每个部分,从而围绕 kubeadm 构建的集群构建“GitOps”流程。在未来的版本中,我们计划以最小的更改(可能没有任何更改)将 API 升级到 v1 版本。
  • kubeadm 的“工具箱”接口 --- 也称为阶段 (phases)。如果您不想执行所有 kubeadm init 任务,您可以使用 kubeadm init phase 命令应用更细粒度的操作(例如生成证书或控制平面 静态 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 用户画像,但我们预计 kubeadm 在 GA 状态下也能满足许多其他场景。

以下是我们的列表:

  • 您是想要试用 Kubernetes 的新用户。kubeadm 是在 Linux 机器上快速启动和运行的最快方式。如果您在 Mac 或 Windows 工作站上使用 Minikube,您实际上已经在 Minikube VM 内部运行 kubeadm 了!
  • 您是负责在裸金属机器上设置 Kubernetes 的系统管理员,您希望快速创建安全、符合最佳实践且高度可配置的集群。
  • 您是希望将 Kubernetes 产品添加到云服务套件中的云提供商。kubeadm 是在较低级别创建集群的首选工具。
  • 您是需要高度定制化 Kubernetes 集群的组织。现有的公共云产品(如 Amazon EKSGoogle Kubernetes Engine)无法满足您的需求;您需要根据您的硬件、安全性、策略及其他需求量身定制的 Kubernetes 集群。
  • 您正在创建比 kubeadm 更高级别的集群创建工具,从头构建集群体验,但您不想重复造轮子。您可以基于 kubeadm 进行“rebase”,并利用 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 Zhao中兴 (ZTE)评审者
许迪蚂蚁金服 (Ant Financial)评审者
Chuck HaHeptio评审者
Liz FrostHeptio评审者
Jason DeTiberusHeptio评审者
Alexander Kanievsky英特尔 (Intel)评审者
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 工具工作组主席
  • GitHub: lucperkins