Kubernetes 1.21发布,支持IPv4/IPv6 双栈等51项增强功能

近日,Kubernetes 1.21正式发布,这也是2021年的第一个版本。此版本包含51项增强功能:13项增强功能已逐步升级为稳定版,16项增强功能已转换为Beta版,20项增强功能已进入Alpha版,2项功能已弃用。新版本更新围绕以下主题:

CronJobs毕业到稳定

自Kubernetes 1.8起,CronJobs一直是一个测试版本功能,在1.21中,这个被广泛使用的API逐渐稳定下来。CronJobs 用于执行定期的计划操作,如备份、报告生成等。每个任务都应该被配置为无限期重复出现,你可以在该间隔时间内定义作业应该启动的时间点。

ImmutableSecrets和ConfigMap

Immutable Secrets和ConfigMap为资源类型添加一个新字段,如果设置了该字段,资源类型将拒绝对这些对象的更改。默认情况下,Secrets和ConfigMap是可变的,这对于能够使用更改的Pod是有益的。如果将错误的配置推送给使用它们的pod,可变的 Secrets 和 ConfigMaps 也会导致问题。

通过将Secrets和ConfigMaps标记为不可变,可以确保您的应用程序配置不会改变。如需更改,则要创建一个新的、唯一命名的Secret或ConfigMap,并部署一个新的pod来使用该资源。不可变的资源还具有扩展优势,因为控制器不需要轮询API服务器来观察改变。

IPv4/IPv6 双栈支持

IP地址是消耗性资源,集群操作人员和管理员需要确保其不会耗尽。特别是,公共IPv4地址现在很稀缺,具有双栈支持,可以将原生IPv6路由到Pod和服务,同时仍允许您的群集在需要的地方使用IPv4。双栈群网络还改善了工作负载的可能伸缩限制。

Kubernetes中的双栈支持意味着Pod、服务和节点可以获取IPv4地址和IPv6地址。在Kubernetes1.21中,双栈网络已从alpha升级到beta,并且默认启用,从而可以同时分配IPv4和IPv6地址。

IPv4 / IPv6双栈提供以下功能

  • 双栈Pod网络(每个Pod分配一个IPv4和IPv6地址)

  • 支持IPv4和IPv6的服务

  • 同时通过IPv4和IPv6接口进行集群外出口路由(例如Internet)

Graceful Node Shutdown

Kubernetes1.21中,GracefulNode Shutdown已经升级到Beta版,它允许 kubelet 知道节点关闭,并优雅地终止调度到该节点的 pod。

目前,当节点关闭时,pod还不能遵循预期终止生命周期,也不会正常关闭,这可能会在许多不同的工作负载下带来问题。以后,kubelet将能够通过systemd检测到即将发生的系统关闭,然后通知正在运行的Pod,以便它们可以尽可能正常地终止。

PersistentVolume健康监测器

PersistentVolume通常用于应用程序中获取本地的、基于文件的存储。它们可以以多种不同的方式使用,并可以帮助用户迁移应用程序而无需重新编写存储后端。

Kubernetes 1.21具有一项新的alpha功能,该功能可以监视PV的运行状况,并在卷变得不健康时进行相应标记。工作负载将能够对运行状况做出反应,以保护数据不被从不健康的卷上写入或读取。

弃用 PodSecurityPolicy

PodSecurityPolicy 作为 Kubernetes 目前常用的安全策略管理和授权机制,在一些限制存储和网络特权使用的场景中,提供了诸多便利。但因版本不兼容等问题,PodSecurityPolicy在 Kubernetes 1.21 中被弃用。与 Kubernetes 所有已弃用的特性一样,PodSecurityPolicy将在其他多个版本中继续可用并提供完整的功能。之前处于测试阶段的 PodSecurityPolicy 计划在 Kubernetes 1.25 中删除。

弃用 TopologyKeys

在 Kubernetes 1.21 中,服务字段 topologyKeys 被弃用;使用此字段的所有组件功能以前都是alpha,现在也已弃用。我们用一种实现感知拓扑路由的方法替换了 topologyKeys,这种支持拓扑的提示是 Kubernetes 1.21 中的一个 alpha 特性。

减少Kubernetes的构建维护

之前,Kubernetes维护了多个构建系统,这通常是造成新贡献者和现有贡献者之间摩擦以及复杂性的根源。在上一个发布周期中,为了简化构建过程和标准化原生的 Golang 构建工具,我们投入了大量的精力。

在此次发布周期中,围绕发布流程的所有权也产生重大转变:从定期向社区请求输入的同步通信模式,转变为社区选择模式——发布中加入特性或博客。这使社区协作和团队合作得到进一步增强。

引入暂停作业特性

Job(作业)是 Kubernetes API 的重要组成部分。虽然其他类型的工作负载(例如Deployments,ReplicaSets,StatefulSets和DaemonSets)解决了需要 Pod 永远运行的用例,但 Job 在 Pod 需要运行到完成时非常有用。Job 通常用于并行批处理,可以用于各种应用程序,如视频渲染、数据库维护、科学计算等。

虽然并行度和 Job 完成的条件是可配置的,但 Kubernetes API 缺乏暂停和恢复Job 的能力。当集群资源有限,需要在另一个 Job 的位置上执行一个更高优先级的 Job 时,通常需要删除较低优先级的 Job ,这是一个糟糕的解决方案,因为 Pod 完成历史和其他与 Job 相关的指标将会丢失。

在Kubernetes 1.21 版本中,你可以通过更新其规范来暂停 Job。该特性目前处于 alpha 阶段,需要你在 API 服务器和控制器管理器上启用 suspend Job 特性门才能使用它。

其他更新

Graduated toStable

  • EndpointSlice

  • Add sysctlsupport

  • PodDisruptionBudgets

Notable FeatureUpdates

  • Externalclient-go credential providers - 1.21是beta版

  • Structuredlogging – 计划1.22升级到 beta 版

  • TTL afterfinish cleanup for Jobs and Pods – 升级到beta版

原文链接:https://kubernetes.io/blog/2021/04/08/kubernetes-1-21-release-announcement/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章