继之前的扩展发布周期之后,如今1.20版本已经恢复到正常的11周更新节奏。这是一段时间以来包含功能最为密集的版本之一,代表着Kubernetes的实际创新速度仍在加快。更重要的是,1.20版本中包含的增强功能alpha版数量甚至高于稳定版,这从一个侧面证明云原生生态系统中仍有许多值得探索的创新空间。
核心主题
存储卷快照操作迎来稳定版
此项功能提供触发存储卷快照操作的标准方法,并允许用户以可移植方式在任意Kubernetes环境以及受支持的存储程序上合并快照操作。
此外,这些Kubernetes快照原语还作为基础构建块,可以为Kubernetes带来开发高级企业级存储管理功能的广阔空间,包括应用程序或集群层级的备份解决方案。
需要注意的是,快照支持需要Kubernetes发行机构捆绑快照控制器、快照CRD以及验证webhook,同时在集群上部署支持快照功能的CSI驱动程序。
Kubectl Debug功能步入beta阶段
Kubectl alpha debug功能在1.20版本中迎来beta阶段,如今已经更名为kubectl debug。此功能直接通过kubectl为用户提供对常见调试工作流的支持。Beta版中,其支持的故障排查方案包括:
- 通过创建使用其他容器镜像或命令的Pod副本,对启动时发生崩溃的工作负载进行故障排查。
- 通过添加带有调试工具的Pod新副本或临时容器(临时容器为一项alpha版功能,默认未启用)对distroless容器进行故障排查。
- 通过在主机命名空间中创建运行容器,并由其访问主机文件系统对节点进行故障排查。请注意,作为新的内置命令,kubectl debug的优先级超过一切名为“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终止阶段。目前,在节点关闭时,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。