Kubernetes 1.19 发布

来源: OSCHINA
2020-08-28

Kubernetes 1.19 现已发布,这是 2020 年的第二个版本,也是迄今为止最长的发布周期,总共持续 20 周。该版本包含了 33 项增强功能;  其中 12 项为稳定版功能、18 项为 beta 功能、还有 13 项为 alpha 版功能。主要更新亮点包括: 

将 Kubernetes 支持窗口增加到一年

长期支持(LTS)工作组在 2019 年初进行的一项调查显示在当前的 9 个月支持期内,很大一部分 Kubernetes 用户未能升级。这一点以及调查中的其他反应表明,如果将补丁支持期延长至 12-14 个月,则 30% 的用户能够将其部署保持在支持的版本上。无论用户使用的是自建版还是商业发行版,情况都是如此。因此,延长支持期将导致超过 80% 的用户使用受支持的版本,而不是现在的 50-60%。一年一度的支持期可为用户提供所需的缓冲期,并且更符合熟悉的年度规划周期。从 Kubernetes 1.19 版本开始,支持窗口将延长到一年。

储存容量追踪

传统上,Kubernetes 调度器基于这样的假设:集群中任何地方都可以使用额外的持久性存储,并具容量无限。拓扑约束解决了第一点,但到目前为止,Pod 调度仍然没有考虑剩余的存储容量可能不足以启动一个新的 pod。存储容量追踪是一个新的 Alpha 特性,它通过为 CSI 驱动程序添加一个 API 来解决这个问题,以报告存储容量,并在 Kubernetes 调度器中为 Pod 选择节点时使用该信息。该功能可作为支持本地卷和其他容量限制较大的卷类型的动态预配置的基础。

通用临时存储

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

CSI Volume 健康监测

CSI 健康状况监控的 Alpha 版本随 Kubernetes 1.19一起发布。该功能使 CSI 驱动程序能够与 Kubernetes 共享来自底层存储系统的异常卷状况,以便将其作为事件报告在 PVC 或 Pod 上。此功能是 Kubernetes 进行程序检测和解决单个卷健康问题的基础。

Ingress 升级为 GA

就将 Ingress API 推向 GA 而言,API 本身在 Beta 版中已经存在了很长时间,以至于通过使用和采用(包括用户和负载均衡器/Ingress 控制器提供商),它已经达到了事实上的 GA 状态。在没有全面替代的情况下放弃它不是一个可行的方法。它显然是一个有用的 API,并且捕获了一组不平凡的用例。在这一点上,似乎更谨慎的做法是将当前的 API 声明为社区将支持的 V1 版本,同时开发 V2 Ingress API 或具有超集功能的完全不同的 API。

结构化日志

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

新的 klog 方法

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

Kubelet 的客户端 TLS 证书轮转

kubelet 使用私钥和证书对 kube-apiserver 进行认证。证书是在 kubelet 首次启动时通过集群外机制提供给它的。自 Kubernetes v1.8 以来,集群已经包含了一个(beta)流程,用于获取初始的证书/密钥对,并在证书到期临近时进行轮转,在 Kubernetes v1.19 中,这个功能可以稳定下来了。

在 kubelet 启动过程中,将对文件系统进行扫描,以查找由证书管理器管理的现有证书/密钥对。如果有可用的证书/密钥,则将加载它。如果没有,则 kubelet 会检查配置文件中的编码证书值或 kubeconfig 中的文件引用。如果证书是一个 bootstrap 证书,则它将用于生成密钥,创建证书签名请求并向 API服务器请求签名的证书。

当到期临近时,证书管理器会负责提供正确的证书,生成新的私钥和请求新的证书。随着 kubelet 请求证书的签名是其启动过程的一部分,并且不断地对来自 kubelet 的证书签名请求进行自动批准,以使集群变得易于管理。

此外还有其它更新内容,详情查看发布说明: https://kubernetes.io/blog/2020/08/26/kubernetes-release-1.19-accentuate-the-paw-sitive/

展开阅读全文
3 收藏
分享
加载中
精彩评论
讲个笑话, 某系统的LTS长达9个月.
2020-08-28 10:09
1
举报
最新评论 (2)
讲个笑话, 某系统的LTS长达9个月.
2020-08-28 10:09
1
回复
举报
评论家们呢?
2020-08-28 09:42
0
回复
举报
更多评论
3 评论
3 收藏
分享
返回顶部
顶部