我们很高兴宣布Kubernetes 1.20的发布,这是2020年的第三版也是最终版!此版本包含42个增强功能:11个增强功能已逐步升级为稳定版,15个增强功能已转换为Beta版,16个增强功能已进入alpha版。
在之前的扩展发布周期之后,1.20发布周期恢复到其正常的11周节奏。这是一段时间以来功能最密集的版本之一:Kubernetes的创新周期仍在上升。此版本具有更多的Alpha vs Stable增强功能,表明在云原生生态系统中仍有很多值得探索的地方。
主要主题
卷快照操作稳定
此功能提供了触发卷快照操作的标准方法,并允许用户以可移植的方式在任何Kubernetes环境和受支持的存储提供程序上合并快照操作。
此外,这些Kubernetes快照原语是基本的构建块,可释放为Kubernetes开发高级企业级存储管理功能的能力,包括应用程序或集群级备份解决方案。
请注意,快照支持将需要Kubernetes发行商捆绑Snapshot控制器,Snapshot CRD和验证Webhook。此外,还必须在群集上部署支持快照功能的CSI驱动程序。
Kubectl将Debug毕业为Beta
Kubectl alpha debug毕业于1.20的Beta版,成为kubectl debug。Kubectl debug直接从kubectl提供对常见调试工作流的支持。此版本的kubectl支持的故障排除方案包括:
•通过创建使用其他容器镜像或命令的Pod副本来解决启动时崩溃的工作负载。•通过在调试容器的新副本中或使用临时容器添加带有调试工具的新容器来解决Distroless容器的故障。(临时容器是默认情况下未启用的Alpha功能)•通过创建在主机名称空间中运行并有权访问主机文件系统的容器,对节点进行故障排除。请注意,作为新的内置命令,kubectl debug它比任何名为"debug"的kubectl插件都具有优先权。您将需要重命名受影响的插件。
kubectl alpha debug现在不建议调用使用,并将在后续发行版中将其删除。更新您的脚本以使用kubectl debug。有关的更多信息kubectl debug,请参见调试运行的Pod[1]。
Beta:API优先权和公平性
最初在1.18中引入,Kubernetes 1.20现在默认情况下启用API优先级和公平性(APF)。这允许kube-apiserver按优先级对传入的请求进行分类。
IPV4/IPV6 Alpha更新
IPv4/IPv6双协议栈已重新实现,可基于用户和社区反馈支持双协议栈服务。这样既可以将IPv4和IPv6服务群集IP地址都分配给单个服务,也可以使服务从单IP堆栈过渡到双IP堆栈,反之亦然。
GA:稳定性的进程PID限制
PID是Linux主机上的基本资源。达到任务限制而又不达到任何其他资源限制并导致主机不稳定的问题是微不足道的。
管理员需要一些机制来确保用户Pod不会导致pid耗尽,从而阻止主机守护程序(运行时,kubelet等)运行。另外,重要的是要确保在容器之间限制pid,以确保它们对节点上其他工作负载的影响有限。在默认情况下启用一年后,SIG节点在SupportNodePidsLimit(节点到容器的PID隔离)和SupportPodPidsLimit(限制每个容器的PID的能力)上都将GA的PID限制分级。
Alpha:正常优雅关闭
用户和集群管理员希望Pod遵守预期的Pod生命周期,包括Pod终止。当前,当节点关闭时,pod不会遵循预期的pod终止生命周期,并且无法正常终止,这可能会导致某些工作负载出现问题。该GracefulNodeShutdown功能现在位于Alpha中。GracefulNodeShutdown使kubelet知道节点系统关闭,从而在系统关闭期间正常终止Pod。
主要变化
Dockershim弃用
Dockershim,不推荐使用Docker的Container Runtime Interface(CRI)shim。因此,不支持Docker,在将来的版本中将删除该支持。由于Docker image遵循开放容器倡议(OCI)image规范,因此Docker产生的image将在所有CRI兼容运行时中继续在您的集群中工作。Kubernetes社区已经写了一篇有关此问题的Dockershim弃用博客[2]文章,其中包含专门的Dockershim弃用FAQ[3]页面。
Exec探针超时处理
关于exec探针超时的长期错误已得到修复,该错误可能会影响现有的pod定义。在此修复程序之前timeoutSeconds,exec探针不适合该字段。取而代之的是,探测将无限期地运行,甚至超过其配置的期限,直到返回结果。进行此更改后,如果未指定值,则将应用1 second
默认值;如果探测时间超过1秒,则现有的容器定义可能不再充分。此修复程序中添加了一个名为ExecProbeTimeout
的功能门,该功能门使集群operators可以还原到以前的行为,但是在以后的发行版中,它将被锁定并删除。为了恢复以前的行为,集群operators应将此功能门设置为false。
请查看有关配置探针的更新[4]文档,以了解更多详细信息。
其他更新
毕业至稳定
•RuntimeClass•内置API类型默认值•添加Pod-Startup Liveness-Probe延迟•在Windows上支持CRI-ContainerD•SCTP服务支持•将AppProtocol添加到Services 和 Endpoints
重要功能更新
CronJobs(以前计划的工作)
发行说明
您可以在发行说明[5]中查看1.20发行版的完整详细信息。
发布的可用性
Kubernetes 1.20可以在GitHub上下载。有一些很棒的资源可供您开始使用Kubernetes。您可以在Kubernetes主站点上查看一些交互式教程,或者使用kind的Docker容器在计算机上运行本地集群。如果您想尝试从头开始构建集群,请查看Kelsey Hightower撰写的Kubernetes Hard Way教程。
发布团队
这个发布是由一群非常敬业的个人使成为可能的,他们在世界上发生的许多事情中作为一个团队聚集在一起。非常感谢发布负责人Jeremy Rickard,以及发布团队中的每个其他人互相支持,并为向社区提供1.20版本而努力工作。
Kubernetes社区继续以绝对惊人的速度增长,并且随着社区的增长,周围的生态系统也在增长。迄今为止,Kubernetes已拥有超过52,000个个人贡献者,并且随着每个发行版的增加,这一数字越来越大。
发布徽标
Kubernetes 1.20发行版是最不成熟的发行版。
对于我们中的许多人来说,2020年是充满挑战的一年,但是Kubernetes的贡献者在此版本中提供了创纪录的增强功能。这是一项巨大的成就,因此发布负责人希望在今年结束时能有所作为,并向Kubernetes 1.14-Caturnetes致敬,其中包括一只名为“Humphrey”的“rad”猫。
汉弗莱(Hemphrey)是release负责人的猫,并且具有永久性blep。在美国,Rad是1990年代相当普遍的语,激光背景也是如此。汉弗莱(Humphrey)在1990年代风格的学校图片中感觉是结束这一年的一种有趣方式。希望汉弗莱(Humphrey)和blep在2020年底为您带来一点喜悦!
微信
引用链接
[1]
调试运行的Pod: https://kubernetes.io/docs/tasks/debug-application-cluster/debug-running-pod/
[2]
Dockershim弃用博客: https://blog.k8s.io/2020/12/02/dont-panic-kubernetes-and-docker/
[3]
Dockershim弃用FAQ: https://blog.k8s.io/2020/12/02/dockershim-faq/
[4]
配置探针的更新: https://github.com/kubernetes/website/blob/d4d2bfc0b15ea1cda1ebb242db8f784a2c676025/content/en/blog/_posts/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes
[5]
发行说明: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md