K8sMeetup 中国社区第一工夫整顿了 v1.19 的亮点内容,为大家具体介绍此版本的次要性能。
作者:bot(才云)、Bach(才云)
美国工夫 8 月 26 日,Kubernetes v1.19 正式公布,这是 2020 年的第二个新版本。受新冠疫情影响,本次版本更新距上次时隔 20 周,这让开发工作组和贡献者有更多工夫来实现工作,也有更多精力专一于 Kubernetes 我的项目之外的生存,从而保持良好的心理状态。
在他们的致力下,Kubernetes v1.19 蕴含 33 个加强性能:其中 12 个加强性能已趋于稳定,18 个进入 beta,13 个进入 alpha。
Major Themes
新版本次要围绕以下主题:
将 Kubernetes 的反对周期缩短到一年
2019 年初,Kubernetes 长期反对(LTS)工作组曾进行过一项考察。考察发现 Kubernetes 公布的版本通常只保护反对九个月,在保护周期内,很大一部分 Kubernetes 最终用户并没有降级。依据该考察以及考察的其余后果,工作组认为如果将新版本反对期限缩短至 12-14 个月,会帮忙 30% 的用户(无论是自建版还是商业发行版)在反对的版本上保留其部署。因而,缩短 Kubernetes 版本反对周期能够让超过 80% 的用户应用受反对的版本,而不是当初的 50-60%。
因而, 从 Kubernetes v1.19 开始,新版本的反对周期将缩短至一年 ,这能够为最终用户提供所需的缓冲,并且与用户通常采纳的年度计划周期更加匹配。
贮存容量追踪
Kubernetes 调度(Scheduling)个别基于以下假如:集群中的任何中央都能够应用附加的持久性存储,并具备有限容量。拓扑束缚解决了上述第一个问题,然而到目前为止,第二个问题还时有发生:有时 Sheduler 会因为没有思考残余的存储容量可能不足以启动新的 Pod,认为它还有可用资源,使节点被拖死,集群产生雪崩。
为了解决该问题,Kubernetes v1.19 推出了一项新的 Alpha 性能:存储容量跟踪。 它能为 CSI 驱动程序增加 API 来报告存储容量,并在为 Pod 抉择节点时在 Kubernetes 调度程序中应用该信息。这个性能是反对为本地卷和其余受容量限度更大的卷类型进行动静预配置的基石。
通用短暂卷
Kubernetes 提供了其生命周期与 Pod 绑定的卷插件,可用作长期空间(例如内置 emptydir
卷类型)或将某些数据加载到 Pod 中(例如内置 configmap
和 secret
卷类型,或“CSI 内联卷”)。Kubernetes v1.19 推出的新的通用长期卷 Alpha 性能容许将任何反对动静预配置的现有存储驱动程序用作长期卷,并将该卷的生命周期绑定到 Pod。它可用于提供与根磁盘不同的长期存储,例如永久性内存或该节点上的独自本地磁盘。反对所有用于卷配置的 StorageClass 参数。反对 PersistentVolumeClaims 反对的所有性能,例如存储容量跟踪、快照和还原以及卷大小调整。
CSI 卷运行状况监控
此外,Kubernetes v1.19 还公布了 Alpha 版本的 CSI 健康状况监控 。这个性能使 CSI 驱动程序能够与 Kubernetes 共享来自底层存储系统的异样卷情况,以便将它们报告为 PVC 或 Pod 上的事件。该性能是 Kubernetes 进行程序检测和解决单个卷衰弱问题的基石。
Ingress API 升入 GA
在 Kubernetes v1.19 中,Ingress API 正式进入 GA。这个 API 自身曾经在 Beta 中可用的工夫曾经很长,在用户应用和采纳(用户以及负载平衡器 / Ingress 控制器提供商)上曾经达到了事实上的 GA 状态,也变得不可或缺。显然,这是一个有用的 API,而且曾经有了一些典型用例,因而工作组决定将以后的 API 申明为社区将反对的 V1,以整顿其状态,同时对 V2 Ingress API 或性能相似的其余 API 更加审慎。
结构化日志
在之前的版本中,登录 Kubernetes 管制立体无奈保障日志音讯和这些日志中对 Kubernetes 对象的援用具备任何对立的构造。这使得解析、解决、存储、查问和剖析日志变得艰难,并迫使管理员和开发人员在大多数状况下基于某些正则表达式依赖于即席解决方案。因为这些问题,基于这些日志的任何剖析解决方案都难以实现和保护。
新的 Klog 办法
在 v1.19 中,Kubernetes 向 klog 库中引入了新的办法 ,该办法提供了更高结构化水平的接口用于格式化日志音讯 。当初每个现有的日志格式化办法(Infof
、Errof
)都能与结构化办法(InfoS
、ErrorS
)进行匹配。新的日志记录办法将日志音讯作为第一参数,将键值对列表作为可变的第二参数。这种办法容许逐渐引入结构化日志记录,且无需将所有 Kubernetes 一次性指向新 API。
Kubelet 客户端 TLS 证书轮换
Kubelet 应用私钥与证书向 kube-apiserver 进行 kubelet 认证。证书在首次启动时会通过集群内部机制提交给 kubelet。 自 Kubernetes v1.18 起,集群引入了一项 beta 流程,用于获取初始证书、密钥并在证书到期时进行轮替。在 v1.19 中,这项机制正式进入稳固版本。
在 kubelet 的启动过程中,文件系统将被扫描,以查找由证书管理器治理的现有证书、密钥对。如果证书、密钥对可用,它会进行加载。如果不可用,kubelet 会在配置文件中查看 kubeconfig 内的编码证书值和文件援用。如果应用疏导证书,则应用该证书生成密钥、创立证书签名申请并向 API Server 申请签名证书。
在证书邻近到期时,证书管理器会提供新的证书、生成新的私钥并申请新的签名证书。 因为申请证书签名是 kubelet 启动过程的一部分,它会一直对来自 kubelet 的证书签名申请进行主动批准,因而集群可管理性将失去晋升。
重要更新
以下是 1.19 版本中值得关注的变动:
以下个性进入稳固
- Seccomp
- Kubelet 客户端 TLS 证书轮换
- 限度节点对 API 的拜访
- 从新设计 Event API
- Ingress V1 毕业稳定版
- CertificateSigningRequest API
- 在没有 Docker 的状况下构建 Kubelet
次要变动
- #693 节点拓扑管理器 :Kubelet 组件,用于协调 Kubernetes 中不同组件的细粒度硬件资源调配;
- #752 EndpointSlice API:新的 Endpoint API,以最终代替以后的 core/v1 Endpoints API;
- #1498 将 Kubernetes 反对周期缩短到一年 :Kubernetes 反对周期缩短到一年或四个发行版。
其余次要变动
- #1451 运行多个 Scheduling Profile:让 Scheduler 运行多个与 Scheduler 名称关联的多个 Scheduler Profile;
- #1513 CertificateSigningRequest API;
- #1412 不可变 Secret 和 ConfigMap:容许将 Secret 和 ConfigMap 设置为不可变。
公布 logo
此次团队也公布了新版本 release logo,它以“Accentuate the Paw-sitive”为主题。Logo 捕获了世界状态的美好前景,其中的字符则是别离代表了团队中每个人的共性,从 emo 到 heppy 等等。
小结
此次公布是数百名技术和非技术社区人员的共同努力!随着 Kubernetes 社区的倒退,它的公布过程极大地展现了开源软件开发中的通力协作。Kubernetes 还在一直地涌入新用户,这种增长发明了踊跃的反馈周期,更多的奉献值提交代码,从而创立了更加沉闷的生态系统。迄今为止,Kubernetes 已有 49000 多位集体贡献者,社区沉闷人数超过 3000 人 。
本文只简略介绍了 Kubernetes v1.19 中的一些重要加强性能,以及企业用户和集体开发者可能会比拟关注的新性能。对于新版本的更多内容,请查看官网文档:
https://kubernetes.io/blog
github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.19.md