互联网技术 / 互联网资讯 · 2023年11月12日 0

Kubernetes 1.20发布

我们很高兴地宣布Kubernetes 1.20版本的发布,这是2020年中的第三个也是最后一个版本!该版本包含42项增强功能,其中包括11项稳定版、15项beta版和16项alpha版。

在经历了扩展发布周期后,1.20版本已恢复到正常的11周更新节奏。这是一个功能极为丰富的版本,表明Kubernetes在创新方面的速度依然在加快。更值得注意的是,1.20版本中alpha版的增强功能数量甚至超过了稳定版,这表明云原生生态系统中还有大量的创新空间等待开发。

Kubernetes 1.20发布

核心主题

存储卷快照操作的稳定版发布

这一功能提供了一种标准的方法来触发存储卷快照操作,并允许用户在任何Kubernetes环境及受支持的存储程序中以可移植的方式合并快照操作。

此外,Kubernetes快照原语作为基础构件,为开发高级企业级存储管理功能提供了广阔的空间,包括应用程序或集群级别的备份解决方案。

需要注意的是,快照支持要求Kubernetes发行机构捆绑快照控制器、快照CRD和验证webhook,同时在集群上部署支持快照功能的CSI驱动程序。

Kubectl Debug功能进入beta阶段

在1.20版本中,kubectl alpha debug功能升级为beta版,更名为kubectl debug。该功能通过kubectl为用户提供对常见调试工作流的支持。Beta版中,支持的故障排查方案包括:

通过创建使用不同容器镜像或命令的Pod副本,来对启动时崩溃的工作负载进行故障排查。通过添加带有调试工具的Pod新副本或临时容器(临时容器为alpha版功能,默认未启用)对distRoleSS容器进行故障排查。通过在主机命名空间中创建运行容器,并通过其访问主机文件系统来对节点进行故障排查。请注意,作为新内置命令,kubectl debug的优先级高于任何其他名为kubectl的插件,需对受影响的插件进行重命名。

在1.20版本中,建议用户停止使用kubectl alpha debug,并计划在后续版本中将其删除。请更新你的脚本以使用kubectl debug。有关kubectl debug的更多详细信息,请参阅调试当前运行的Pod。

Beta功能:API优先级与公平性

作为1.18版本中首次引入的功能,API优先级与公平性(APF)在Kubernetes 1.20版本中默认启用。这意味着kube-APIserver可以按优先级对传入请求进行分类。

经过更新的alpha功能:IPV4/IPV6

IPv4/IPv6双栈功能进行了重新实现,旨在满足用户和社区对双协议栈服务的反馈需求。这意味着我们可以同时为单一服务分配IPv4和IPv6服务集群的IP地址,并在服务中实现单IP栈与双IP栈之间的切换。

通用版功能:限制进程PID以提高稳定性

进程ID(PID)是Linux上的一种基本资源。为了避免主机的稳定性受到影响,我们需要在达到任务上限和不触及资源上限之间找到平衡。

管理员需要采取相应机制,以确保用户Pod不会导致PID耗尽,从而影响主机守护程序(如运行时、kubelet等)的正常运行。此外,更重要的是要确保在容器之间限制PID,防止其对节点上的其他工作负载造成过多影响。在一年前实现默认启用后,SIG Node终于通过supportNodePidsLimit(节点到Pod PID隔离)和supportPodPidsLimit(按Pod限制PID)将限制进程PID以提高稳定性功能推向通用版本。

Alpha功能:节点优雅关闭

用户和集群管理员都希望Pod能够遵循预定的生命周期,包括终止阶段。然而,目前在节点关闭时,Pod并不遵循预期的终止生命周期,可能导致某些工作负载出现问题。GRACEfulNodeShutdown功能现已推出alpha版,以通知kubelet节点系统的关闭状态,从而在系统关闭期间优雅地关闭各个Pod。

主要变化

弃用DockeRsHiM

作为面向Docker的容器运行时接口(CRI),我们在1.20新版本中宣布弃用dockeRsHiM。这意味着将不再对Docker提供支持,并将在后续版本中彻底删除该功能。但用户不必担心,Docker生成的镜像遵循开放容器倡议(OCI)镜像规范,仍可在所有兼容CRI的运行时中正常使用。Kubernetes社区已发布有关弃用决定的详细博文,其中包含常见问题解答页面。

Exec探针超时处理

长期存在的exec探针超时bug终于得到修复(该bug可能影响已使用修复版本的现有Pod定义)。在发布修复前,exec探针未考虑到timeoutSeconds字段,导致探针无限期运行,甚至超出配置上限。此次更改后,如果未指定值,则探针默认应用1秒。如果探针耗时超过1秒,现有Pod定义可能无法自给自足。本次修复还引入了名为ExecProbeTimeout的特征门,允许集群操作人员恢复至先前行为;但在后续版本中,该功能将被锁定并删除。要恢复先前行为,集群操作人员应将该特征门设置为false。