本文永久链接: https://www.xtplayer.cn/kubernetes/about-kubernetes-1.20/

Kubernetes 1.20 版本有 43 个增强(从 1.19 版本增加的 34 个),包括 15 个全新的,11 个升级到稳定的,以及 17 个对现有特性的改进。

这表明这些增强的作用范围较小。例如,对 kube-apiserver 进行了一些更改,以使其在 HA 集群中更加友好并具有更好的性能。它还可以在升级后更有效地重新启动。

为什么会这样?

这些小的改进和新特性为未来的重大变化铺平了道路。然而,最新版本已经有了一个主要的变化(尽管人们期待已久)。

Kubernetes 弃用 Docker

从 1.20 版本开始,Kubernetes 将不再支持 Docker 作为容器运行时,而是支持容器运行时接口Container Runtime Interface(CRI)

但是不要惊慌!

这并不意味着 Docker 已经死了,你不必放弃 Docker 工具。对于 Kubernetes 用户来说,不会有太大的改变,因为你仍然可以使用 Docker 构建容器,生成的映像也将继续在 Kubernetes 集群中运行。

然而,Kubernetes 计划在未来的版本中移除 kubelet 和 dockershim 中的 Docker 引擎支持,很可能在明年晚些时候。但是你可以通过将内置 dockershim 替换为外部 dockershim 来继续使用它。

Docker 和 Mirantis 还同意合作并维护 Kubernetes 之外的 shim 代码,作为 Docker 引擎的一个一致的 CRI 接口。这确保它通过了所有的一致性测试,并像以前的内置版本一样无缝地工作。

为了保持优秀的开发人员体验,Docker 计划继续将这个 shim 发布到 Docker 桌面,而 Mirantis 将在 Mirantis Kubernetes 引擎中利用这个功能。此外,对用 Docker 工具构建的容器映像的 net/net 支持不会被弃用,而且会像以前一样工作。

尽管 Docker 是领先的容器解决方案,但并不是为了嵌入到 Kubernetes 中而开发的。它不仅具有容器运行时功能,还具有多种 UX 增强功能,使开发人员能够与之无缝交互。

Docker 是一个完整的技术堆栈(而不仅仅是一个集装箱化平台),它也提供了称为“containerd”的高级容器运行时,从现在起,这将是您的容器运行时选项。

这些更新和增强功能不一定专注于 Kubernetes。取而代之的是,它们旨在克服障碍,使开发人员能够最大程度地利用障碍。例如,目前,Kubernetes 集群需要一个名为 Dockershim 的工具,该工具已容器化。它用于为团队必须维护的另一种工具增加一定程度的复杂性。但是,它是经常产生错误和其他问题的来源。因此,Kubernetes 项目计划在 1.23 版中删除 Dockershim 并终止对 Docker 的支持。

这意味着问题仅归结为将 Docker 换成 CRI 运行时。但是就目前而言,Docker 开发仍然是相同的没有任何明显的差异。内置 Docker 的映像不是特定于 Docker 的,而是Open Container Initiative (OCI) images。

OCI 是 Docker 在 2015 年建立的,以支持可互操作的容器标准(以确保容器可以在任何环境下运行)。在过去的五年里,它被证明是一个巨大的成功,在促进创新的同时保持互操作性。要使用这些图像,可以使用 containerd 或CRI-O

令人兴奋的新功能

1. CronJobs 和 Kubelet CRI 支持

CronJobs 在 1.4 版中引入,并从 1.5 版开始具有 CRI 支持。但是,尽管被广泛使用,但都没有被认为是稳定的。因此,很高兴看到开发人员所依赖的用于运行生产集群的功能不再被视为 Alpha。

2. CSIServiceAccountToken

此更新通过增强身份验证和令牌处理,大大提高了安全性。现在您可以更安全地访问需要身份验证的卷(包括 secret vaults),设置和部署也要容易得多。

3.公开关注于资源请求和对 Pod 模型的限制的度量

现在有了更多指标可以更好地规划集群的容量,当遇到驱逐问题时,它也有助于排除故障。

4.优雅的节点关闭

虽然它是一个小特性,但它使开发人员的工作变得简单多了。通过在节点关闭时适当释放资源,您现在可以避免奇怪的行为。

5. kube-apiserver 身份标识

每个 kube-apiserver 实例的唯一标识符通常不会被注意到,但这是必要的,因为了解它将有助于确保未来 Kubernetes 版本中的高可用性特性。

6.系统组件日志清理

Kubernetes 系统漏洞最近曝光,尤其是凭证泄漏到日志输出中。牢记大局,现在您可以确定泄漏的潜在来源,并建立编辑机制以消除这些泄漏。

Kubernetes 的系统漏洞最近暴露出来,特别是凭证泄露到日志输出中。现在可以确定泄漏的潜在源,并设置一个修订机制来消除这些漏洞。

应该了解的关键弃用

1. kubeadm 主节点角色更名

阶段:弃用

功能组:集群生命周期

现在将node-role.kubernetes.io/master 更改为 node-role.kubernetes.io/control-plane

阶段:升级到 Beta

功能组:api-machinery

每个 Kubernetes 对象中的 SelfLink 字段都包含一个表示给定对象的 URL,但不提供任何新信息。同时,它的创建和维护会影响性能。

Kubernetes 1.16 开始弃用,从现在开始,特性门( feature gate)在默认情况下是禁用的,并计划在 Kubernetes 1.21 中删除。

3.流式代理重定向

阶段:弃用

功能组:节点

在 1.18 版中已标记为弃用,StreamingProxyRedirects 和--redirect-container-streaming标志都不会启用。在 1.22 版本中,它也会被默认禁用,而在 1.24 版本中则完全删除。

从上面可以看到,Kubernetes 的开发人员和管理员没有什么可担心的。当他们利用 docker 命令和 kubectl 命令来管理 Kubernetes 集群时,本质上就是业务。