我们迎来了Kubernetes1.19,这是2020年发布的第二个版本,也是迄今为止最长的发布周期,总共持续了20周。它包括33个增强功能:12个增强功能达到稳定版,18个增强处在beta版,还有13个是alpha版。
由于COVID-19、George Floyd抗议事件,以及我们作为发布团队经历的其他一些全球事件,1.19的发布与常规版本有很大不同。由于上述原因,我们决定调整时间表,让SIG、工作组和贡献者能够有更多时间来完成工作。同时,也让大家有时间关注Kubernetes(http://www.alauda.cn)项目之外的生活,并确保他们良好的精神健康状态。
贡献者是Kubernetes的核心,而并非相反。Kubernetes的行为准则要求善待彼此、成就彼此,尽管我们的世界动荡不安,我们看到的依然是一个伟大且充满谦逊的社区。
1Kubernetes支持窗口增加到一年
长期支持(LTS)工作组在2019年初进行的一项调查显示,Kubernetes终端用户中有相当一部分未能在当前9个月的支持期内升级。该调查的其他结论还包括,如果补丁支持期限延长到12-14个月,30%的用户将能够跟上新版本的部署。这似乎是正确的,无论用户使用的是自建,还是商业销售的发行版。
因此,将支持期延长将有超过80%的用户享受到支持版本,而现在只有50-60%。一年的支持期为最终用户提供了必要的缓冲,并且与熟悉的年度规划周期更加协调。因此,从Kubernetes 1.19版本开始,支持窗口将延长到一年。
2存储容量跟踪
传统上,Kubernetes调度器基于这样的假设:集群中的任何地方都有额外的持久性存储,并且具有无限的容量。拓扑约束解决了第一点,但是到目前为止,pod调度仍然没有考虑到剩余的存储容量可能不足以启动新的pod。存储容量跟踪是一个新的alpha特性,通过为CSI驱动程序添加API来报告存储容量,并在为pod选择节点时在Kubernetes调度器中使用该信息。此功能可作为支持本地卷和其他容量受限的卷类型的动态资源调配的基础。
3临时通用卷
Kubernetes提供的卷插件的生命周期与pod相关,可以用作临时空间(例如,内置的emptydir卷类型)或将一些数据加载到pod中(例如,内置的configmap和secret卷类型,或“CSI inline volumes”)。新的通用临时卷alpha功能允许任何支持动态资源调配的现有存储驱动程序用作临时卷,并将卷的生命周期绑定到Pod。它可以用来提供与根磁盘不同的临时存储,例如持久内存,或者该节点上的一个单独的本地磁盘。支持卷配置的所有Storage Class参数。支持Persistent Volume Claims支持的所有功能,例如存储容量跟踪、快照和恢复以及卷大小调整
4CSI卷运行状况监控
本次Kubernetes 1.19发布了CSI运行状况监测的alpha版本。这个特性使CSI驱动程序能够与Kubernetes(https://www.alauda.cn)共享来自底层存储系统的异常卷情况,从而能够将它们作为事件报告到PVC或Pod上。该特性可以作为Kubernetes程序化检测和解决单卷运行状况问题的基础。
5Ingress正式迎来 GA
在将Ingress API推向GA方面,API本身已经在beta版中可用了很长时间,由于不断被用户和负载均衡/Ingress Controller提供商等所使用和采用,它已经获得了事实上的GA状态。在没有完全替代的情况下放弃它是不可行的做法。它是一个重要的API,并捕获了一系列重要的用例。在这一点上,更谨慎的做法是将当前的API声明作为社区支持的V1版,并对其状态进行编码,同时开发 Ingress API V2版本,或具有超集特性的新的API。
6结构化日志
在v1.19之前,在Kubernetes控制平面进行日志记录无法保证日志消息和对Kubernetes对象的引用保持统一的结构。这使得解析、处理、存储、查询和分析日志变得困难,并且迫使管理员和开发人员在大多数情况下依赖基于一些正则表达式的临时解决方案。由于这些问题的存在,任何基于这些日志的分析解决方案都很难实现和维护。
7新的klog方法
Kubernetes 1.19版本引入了klog库的新方法,这些方法为格式化日志消息提供了一个更结构化的接口。每个现有的格式化日志方法(Infof、Errorf)都与结构化方法(InfoS、ErrorS)相匹配。新的日志记录方法接受日志消息作为第一参数,并将键值对列表作为第二变量参数。这种方法允许渐进地采用结构化日志记录,而不需要一次将所有Kubernetes指向新的API。
8kubelet的客户端TLS证书轮换
kubelet使用私钥和证书向kube-apiserver验证kubelet。当kubelet第一次启动时,通过集群外机制将证书提供给kubelet。自从kubernetes v1.8以来,集群开始引入一个beta过程,用于获取初始证书/密钥对,并在证书到期时对其进行轮替。在Kubernetes v1.19中,这一功能进入稳定版本。
在kubelet启动期间,将扫描文件系统,以查找由证书管理器管理的现有证书/密钥对。如果有可用的证书/密钥,则将加载该证书/密钥。如果没有,kubelet将检查其配置文件中的编码证书值或文件引用。如果证书是引导证书,那么它将用于生成密钥、创建证书签名请求并从API服务器请求签名证书。
在证书到期后,证书管理器负责提供正确的证书,生成新的私钥并请求新的证书。由于kubelet请求将证书签名作为其引导序列的一部分,并且不断对来自kubelet的证书签名请求进行自动批准,因此整个集群的可管理性将大幅提升。
9其他更新
以下功能迎来稳定版:
-
Seccomp
-
Kubelet客户端TLS证书轮换
-
限制节点对API的访问
-
重新设计Event API
-
Ingress进入V1稳定版
-
Certificate Signing Request API
-
无需Docker构建 Kubelet
重大变化:
-
节点拓扑管理器
-
新的端点API
-
将Kubernetes支持窗口延长到一年
其他重要特性:
-
运行多个Scheduling Profiles
-
Certificate Signing Request API
-
不可变Secrets 和ConfigMaps
10Kubernetes 1.19版本logo
是你们激发了Kubernetes 1.19发布标识的灵感!这个版本更像是一场马拉松,它证明了当这个世界是一个荒芜之地时,我们可以走到一起,做一些不可思议的事情。
原文链接:
https://kubernetes.io/blog/2020/08/26/kubernetes-release-1.19-accentuate-the-paw-sitive/