Kubernetes 1.19:突出 Paw-sitive

最终,我们迎来了 Kubernetes 1.19,这是 2020 年的第二个版本,也是迄今为止最长的发布周期,总共持续了 20 周。它包含 34 项增强功能:10 项增强功能正在转变为稳定版,15 项增强功能处于测试版,9 项增强功能处于 Alpha 版。

由于 COVID-19、George Floyd 抗议活动以及我们作为发布团队经历的其他几次全球事件,1.19 版本的发布与常规版本截然不同。由于这些事件,我们决定调整时间表,让 SIG、工作组和贡献者有更多时间完成工作。额外的时间也让人们有时间专注于 Kubernetes 项目之外的生活,并确保他们的心理健康状况良好。

贡献者是 Kubernetes 的核心,而不是相反。Kubernetes 行为准则要求人们彼此友善,尽管世界动荡不安,我们看到的只有来自社区的伟大和谦逊。

主要主题

将 Kubernetes 支持窗口增加到一年

长期支持 (LTS) 工作组在 2019 年初进行的一项调查表明,很大一部分 Kubernetes 最终用户未能在当前 9 个月的支持期内升级。该调查和其他反馈表明,如果将补丁支持期延长至 12-14 个月,30% 的用户将能够保持其部署在受支持的版本上。无论用户是自行构建还是商业销售的发行版,这种情况似乎都是如此。因此,扩展将导致超过 80% 的用户使用受支持的版本,而不是我们现在的 50-60%。一年的支持期为最终用户提供了他们似乎想要的缓冲,并且更符合熟悉的年度规划周期。从 Kubernetes 1.19 版开始,支持窗口将延长至一年。

存储容量跟踪

传统上,Kubernetes 调度器基于以下假设:集群中任何地方都有额外的持久存储可用,并且具有无限容量。拓扑约束解决了第一点,但到目前为止,Pod 调度仍然是在未考虑剩余存储容量可能不足以启动新 Pod 的情况下完成的。存储容量跟踪是一种新的 alpha 功能,它通过添加一个 API 让 CSI 驱动程序报告存储容量,并在 Kubernetes 调度器中选择 Pod 的节点时使用该信息来解决这个问题。此功能是支持本地卷和其他容量受限的卷类型的动态配置的垫脚石。

通用临时卷

Kubernetes 提供了生命周期与 Pod 绑定并可用作暂存空间(例如,内置的 emptydir 卷类型)或将一些数据加载到 Pod 中的卷插件(例如,内置的 configmapsecret 卷类型,或“CSI 内联卷”)。新的通用临时卷 alpha 功能允许任何支持动态配置的现有存储驱动程序用作临时卷,该卷的生命周期与 Pod 绑定。它可以用于提供与根磁盘不同的暂存存储,例如持久内存,或者该节点上的单独本地磁盘。支持卷配置的所有 StorageClass 参数。支持 PersistentVolumeClaims 支持的所有功能,例如存储容量跟踪、快照和还原以及卷大小调整。

CSI 卷运行状况监控

CSI 运行状况监控的 alpha 版本随 Kubernetes 1.19 一起发布。此功能使 CSI 驱动程序能够与 Kubernetes 共享来自底层存储系统的异常卷状况,以便可以将它们作为 PVC 或 Pod 上的事件报告。此功能是 Kubernetes 对单个卷运行状况问题进行编程检测和解决的垫脚石。

Ingress 升级到正式版

在将 Ingress API 移至 GA 方面,该 API 本身已经处于测试版中很长时间了,以至于它通过使用和采用(用户和负载均衡器/Ingress 控制器提供商)获得了事实上的 GA 状态。在没有完整替代方案的情况下放弃它不是一个可行的方法。它显然是一个有用的 API,并捕获了一组重要的用例。目前,将当前 API 声明为社区将作为 V1 支持的东西,编纂其状态,同时使用超集功能开发 V2 Ingress API 或完全不同的 API,似乎更为谨慎。

结构化日志记录

在 v1.19 之前,Kubernetes 控制平面中的日志记录无法保证日志消息和对这些日志中 Kubernetes 对象的引用的任何统一结构。这使得解析、处理、存储、查询和分析日志变得困难,并迫使管理员和开发人员在大多数情况下依赖于基于某些正则表达式的临时解决方案。由于这些问题,任何基于这些日志的分析解决方案都难以实施和维护。

新的 klog 方法

此 Kubernetes 版本为 klog 库引入了新方法,这些方法为格式化日志消息提供了更结构化的接口。每个现有的格式化日志方法(InfofErrorf)现在都由结构化方法(InfoSErrorS)匹配。新的日志记录方法将日志消息作为第一个参数,并将键值对列表作为可变参数的第二个参数。这种方法允许逐步采用结构化日志记录,而无需一次将 所有 Kubernetes 转换为新的 API。

kubelet 的客户端 TLS 证书轮换

kubelet 使用私钥和证书向 kube-apiserver 验证 kubelet 的身份。证书在 kubelet 首次启动时通过集群外机制提供给 kubelet。自 Kubernetes v1.8 以来,集群已包含一个(测试版)流程,用于获取初始证书/密钥对并在证书即将过期时轮换它。在 Kubernetes v1.19 中,此功能已升级到稳定版。

在 kubelet 启动序列期间,将扫描文件系统以查找由证书管理器管理的现有证书/密钥对。如果有可用的证书/密钥,它将被加载。如果不可用,则 kubelet 会在其配置文件中检查编码的证书值或 kubeconfig 中的文件引用。如果证书是引导证书,则它将用于生成密钥、创建证书签名请求并从 API 服务器请求签名证书。

当过期临近时,证书管理器负责提供正确的证书,生成新的私钥并请求新的证书。由于 kubelet 请求将证书签名作为其启动序列的一部分,并且持续进行,因此需要自动批准来自 kubelet 的证书签名请求,以使集群管理可管理。

其他更新

已升级到稳定版

主要更改

其他值得注意的功能

发行说明

请在我们的发行说明中查看 Kubernetes 1.19 版本的完整详细信息。

可用性

Kubernetes 1.19 版本已可在 GitHub 上下载。要开始使用 Kubernetes,请查看这些交互式教程,或者使用 Docker 容器“节点”通过 kind(Docker 中的 Kubernetes)运行本地 Kubernetes 集群。您还可以使用 kubeadm 轻松安装 1.19 版本。

发布团队

本次发布是数百位贡献了技术和非技术内容的个人共同努力的成果。特别感谢由 HashiCorp 的高级开发者倡导者 Taylor Dolezal 领导的发布团队。34 名发布团队成员协调了发布的各个方面,从文档编写到测试、验证和功能完整性。

随着 Kubernetes 社区的成长,我们的发布过程展现了开源软件开发中令人惊叹的协作。Kubernetes 的新用户持续快速增长。这种增长创造了一个积极的反馈循环,更多贡献者提交代码,从而形成一个更活跃的生态系统。迄今为止,Kubernetes 已经有超过 49,000 名个人贡献者 和一个超过 3,000 人的活跃社区。

所有人都为 Kubernetes 1.19 版本徽标提供了灵感!这个版本的发布更像是一场马拉松,也证明了当世界处于混乱之时,我们可以团结起来做出令人难以置信的事情。

Kubernetes 1.19 Release Logo

“强调积极的一面(Accentuate the Paw-sitive)”被选为发布主题,因为它抓住了发布团队的积极态度,尽管世界形势不容乐观。1.19 徽标中描绘的角色代表了我们发布团队中每个人的个性,从忧郁到活泼,以及更多!

关于设计师:Hannabeth Lagerlof 是一位居住在加利福尼亚州洛杉矶的视觉设计师,她在环境和平面设计方面拥有丰富的背景。Hannabeth 创作能够激发联系的艺术和用户体验。您可以在 Twitter 上找到 Hannabeth:@emanate_design。

长期运行

该版本的发布在增强方面也有所不同。传统上,我们在征集增强功能和增强功能冻结之间有 3-4 周的时间,这结束了贡献者可以确认特定功能是否会成为该周期一部分的阶段。这个发布周期很特别,我们在同一里程碑上花了五个星期。延长的持续时间使贡献者有更多时间计划和决定各自功能的毕业。

贡献者实现功能的里程碑从通常的五周延长到七周。贡献者有 40% 更多的时间来处理他们的功能,从而减少了疲劳,并有更多的时间来思考实施过程。我们还注意到,最后一刻的匆忙情况大大减少了。这个周期中的例外请求也更少了 - 6 个,而上一个发布周期为 14 个。

用户亮点

  • CNCF 授予 Zalando,欧洲领先的时尚和生活方式在线平台,顶级最终用户奖。Zalando 利用了多个 CNCF 项目,并开源了他们自己的多个开发项目。

生态系统更新

  • CNCF 刚刚结束了其第一次虚拟 KubeCon。所有演讲都为已注册的任何人按需提供,现在报名还不晚!
  • Kubernetes 安全专家认证(CKS)将于 11 月推出!CKS 专注于集群和系统加固、最大限度地减少微服务漏洞和供应链安全。
  • CNCF 发布了第二份云原生开发状态,显示了使用容器和无服务器技术的云原生开发人员数量的大幅增长。
  • 专注于 Kubernetes 贡献者的网站 Kubernetes.dev 已上线。它将贡献者文档、资源和项目活动信息集中到一个中心位置。

项目速度

Kubernetes DevStats 仪表板 展示了主要公司贡献者的贡献明细,以及关于从个人贡献者到拉取请求生命周期时间的各种预配置报告。如果您想收集来自 Kubernetes 和 CNCF 社区的数字、事实和数据,这是最好的起点。

在这个从四月到八月的发布周期中,有 382 家不同的公司和超过 2,464 个人为 Kubernetes 贡献了力量。查看 DevStats 以了解有关 Kubernetes 项目和社区整体速度的更多信息。

即将发布的版本网络研讨会

加入 Kubernetes 1.19 发布团队的成员,参加 2020 年 9 月 25 日的网络研讨会,了解此版本中的主要功能,包括存储容量跟踪、结构化日志记录、Ingress V1 GA 等。在此处注册:https://www.cncf.io/webinars/kubernetes-1-19/

参与其中

参与 Kubernetes 的最简单方法是加入与您兴趣相符的众多特殊兴趣小组(SIG)之一。您是否想向 Kubernetes 社区广播一些内容?在我们的每月社区会议上以及通过以下渠道分享您的声音。感谢您持续的反馈和支持。