创建和管理Kubernetes集群的更坚实基础

编者注:今天的帖子是LucasKäldström的独立Kubernetes维护者和SIG集群生命周期成员,分享了该小组正在建设的内容和即将发生的事情。 

您上次收到我们的消息是在9月,当时我们宣布 库贝姆。使kubeadm成为Kubernetes生态系统中的一流公民的工作正在继续和发展。我们中的一些人在KubeCon之前也见过面,并举行了非常富有成效的会议,讨论了SIG,kubeadm和kops的范围。 

继续定义SIG集群生命周期

库贝姆的范围是什么?
我们希望kubeadm是所有Kubernetes部署的通用构建模块集。该文章提供了安全且推荐的方式来引导Kubernetes。由于没有一种真正的方式来设置Kubernetes,因此kubeadm在每个阶段都将支持多种方法。我们想要确定Kubernetes的每个部署都具有的共同阶段,并为这些阶段提供可配置且易于使用的kubeadm命令。例如,如果您的组织要求您手动或以自定义方式在群集中分发证书,则仅在该阶段跳过使用kubeadm。在这种情况下,我们旨在使kubeadm可用于所有其他阶段。我们希望您能够选择您希望kubeadm做的事情,然后让您自己做剩下的事情。

因此,kubeadm的范围应易于扩展,模块化并且非常易于使用。现在,有了我们的v1.5版本,kubeadm只能为您做“一顿饭”。在将来的版本中,随着kubeadm变得更加组件化,它会发生变化,同时仍然为您提供一切所需的机会。但是kubeadm仍将只处理Kubernetes的引导。它永远不会为您处理机器的配置,因为这可以通过许多其他方式完成。此外,我们希望kubeadm可以在任何地方工作,甚至可以在多种架构上使用,因此我们建立了 多架构支持 从最开始。

科普的范围是什么?
适用范围 ps 用于自动化完整的集群操作:安装,集群重新配置,升级kubernetes以及最终删除集群。 ps具有基于Kubernetes API Machinery的丰富配置模型,因此您可以轻松地根据需要自定义一些参数。 ps(与kubeadm不同)为您处理资源供应。 ps的目标是成为AWS(以及将来可能的其他提供商)的终极即用体验。将来,kops将在现有的引导阶段采用越来越多的kubeadm。这会将kops内部的一些复杂性以kubeadm的形式移到中心位置。

SIG集群生命周期的范围是什么?
SIG集群生命周期 积极尝试简化Kubernetes的安装和管理过程。这可以通过在许多情况下修改Kubernetes本身并排除常见任务来实现。我们还试图解决集群生命周期中的常见问题(如名称所说!)。我们维护kubeadm和kops并对其负责。我们讨论了在AWS(及以后)上引导集群的当前方法的问题,并尝试使其变得更容易。我们在 #sig-cluster-lifecycle 和#kubeadm频道。 我们见面并讨论 每周一次有关Zoom的最新主题。欢迎来打个招呼!另外,不要害羞 有助于;我们希望您的评论和见解!

期待v1.6

我们针对v1.6的目标围绕重构,稳定和安全性。 

首先,我们希望将kubeadm及其可组合的配置体验提高到beta。我们将重构kubeadm,以便引导过程的每个阶段都可以分别调用。我们希望将TLS Bootstrap API,Certificates API和ComponentConfig API引入beta版本,并使用它们来获取kops(和其他工具)。 

通过将新的控制器添加到控制器管理器中,我们还将使用的令牌发现(即gcr.io/google_containers/kube-discovery:1.0图片)升级到Beta版。 BootstrapSigner。使用作为Secrets管理的令牌,该控制器将在新的kube-public名称空间中对众所周知的ConfigMap的内容(kubeconfig文件)进行签名。未经身份验证的用户可以使用此对象,以使用简单且简短的共享令牌启用安全引导。您可以阅读完整的建议 这里.

除了可以分别调用各个阶段外,我们还将添加一个新阶段,以自托管模式(与当前的静态pod技术相反)启动控制平面。自托管技术是由CoreOS以以下形式开发的: Bootkube,现在将作为替代产品并入Kubernetes官方产品中。感谢CoreOS推动了这一范例的发展!首先,使用静态容器设置临时控制平面,并根据需要注入Deployments,ConfigMap和DaemonSet,最后关闭临时控制平面。目前,默认情况下,etcd仍将位于静态窗格中。  

最初,我们支持自托管,因为我们希望支持使用kubeadm进行修补程序版本升级。例如,从v1.6.2升级到v1.6.4应该很容易。我们认为内置升级支持是真正的集群生命周期工具的关键功能。仍然可以在没有自托管的情况下进行升级,但需要更多的手动工作。

在稳定方面,我们要开始运行kubeadm e2e测试。在此v1.5的时间范围内,我们添加了单元测试,并且我们将继续增加该范围。我们希望将其扩展到每PR e2e测试,并通过 库贝姆初始化库贝姆加入;运行一些特定于kubeadm的测试,以及可选的一致性测试套件。

最后,在安全性方面,我们还希望默认情况下使kubeadm尽可能安全。我们希望为v1.6启用RBAC,锁定kubelet和诸如kube-dns和kube-proxy之类的内置服务可以执行的操作,并可能创建具有不同权限的特定用户帐户。

关于发布,我们希望在kubernetes v1.6 tarball中具有官方的kubeadm v1.6二进制文件。这意味着将我们的版本与官方版本同步。可以找到我们到目前为止所做的更多详细信息 这里。在可能的情况下,我们旨在将kubeadm代码移至kubernetes / 库贝姆存储库中(这在某些特定于Kubernetes代码的基础架构问题上可能会花费一些时间来解决。)

v1.6的最佳选择将包括一个官方的CoreOS Container Linux安装程序容器,该容器执行debs / rpm对Ubuntu / CentOS所做的工作。通常,扩展发行版支持会很好。我们也想采用 Kubelet动态设置 因此传递给kubeadm init的配置会自动向下流到节点(当前需要手动配置)。我们希望可以使用kubeadm从HEAD测试kubernetes。

到2017年及以后

除了上面提到的所有内容外,我们希望kubeadm只是一个可用于引导Kubernetes集群的生产级(GA)工具。我们希望HA /多主服务器通常比现在跨平台更容易实现(尽管kops使今天在AWS上变得如此容易!)。我们希望云提供商不在树上并且可以单独安装。 kubectl应用-f my-cloud-provider-here.yaml 应该工作。该文档应该更强大并且应该更深入。容器运行时接口(CRI)和联合身份验证应与kubeadm配合使用。应该删除过时的入门指南,以免误导新用户。

重构云提供商集成插件
现在,云提供程序集成已内置到控制器管理器,kubelet和API Server中。再加上对Kubernetes的日益增长的兴趣,使得将云提供商集成编译到核心中变得难以维持。显然,特定于供应商的功能不应成为Kubernetes核心项目的一部分,而应作为第三方供应商的附件提供。应将所有特定于云的内容移至一个控制器中,如果需要,则应移至几个。该控制器将由第三方(通常是集成背后的公司)维护,并将实现特定于云的功能。从核内迁移到核外是破坏性的,但是它具有非常好的副作用:精简核心,可以将超过七个现有云与Kubernetes集成在一起,并且安装起来更加容易。例如,您可以在Deployment中运行云控制器二进制文件并使用 kubectl适用 容易。

v1.6的计划是使:

  • 创建并运行核心外的云提供商集成控制器
  • 在Kubernetes版本中发布一个新的临时二进制文件:cloud-controller-manager。该二进制文件将包括七个现有的云提供商,并将用作验证,测试和迁移到新流程的一种方式。 In a future release (v1.9 is proposed), the -cloud-provider flag will stop working, 和 the temporary cloud-controller-manager binary won’t be shipped anymore. Instead, a repository called something like kubernetes/cloud-providers will serve as a place for officially-validated cloud providers to evolve 和 exist, but all providers there will be independent to each other. (issue #2770;提案 #128;码 #3473

从v1.4到v1.5的变更日志

库贝姆  

v1.5是kubeadm的稳定版本。我们致力于使kubeadm变得更加用户友好,透明和稳定。添加了一些新功能,使其更具可配置性。

以下是更改内容的简短摘录:

  • 做了 控制台输出 库贝姆清洁剂等等 方便使用的 #37568
  • 已实施 库贝姆重置 并排干并清理节点 #34807#37831
  • 飞行前检查 如果环境无效,实现会快速失败 #34341#36334
  • kubectl日志kubectl执行程序 现在可以与kubeadm一起使用 #37568
  • 以及许多其他改进,请阅读全文 变更日志.

ps

以下是更改的摘要:

  • 支持CNI网络插件(Weave,Calico,Kope.io)
  • 完全私有部署,其中节点和主节点没有公共IP
  • 改进了群集的滚动更新,尤其是HA群集
  • OS对CentOS / RHEL / Ubuntu以及Debian的支持,以及对sysdig和perf工具的支持

去看看 ps发布页面 为了获得有关最新和最强大的kops版本的信息。

概要

简而言之,我们很高兴能在即将发布的版本中为您带来许多改进,从而对未来的路线图感到兴奋。我们希望它将使体验变得更轻松,并导致更多地采用Kubernetes。

感谢您的所有反馈和贡献。我希望这能使您对我们正在做的事情有所了解,并鼓励您加入我们的会议以打招呼!

- 卢卡斯·卡尔斯特伦,Kubernetes独立维护者和SIG集群生命周期成员