扩展支持版本的发布说明 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

扩展支持版本的发布说明

本主题介绍有关扩展支持中每个 Kubernetes 版本需要注意的重要更改。升级时,请仔细检查集群新旧版本之间发生的变化。

Kubernetes 1.24

Kubernetes 1.24 现已在 Amazon EKS 中推出。有关 Kubernetes 1.24 的更多信息,请参阅官方发布公告

重要
  • 从 Kubernetes 1.24 开始,默认情况下集群中不启用新的测试版 API。默认情况下,现有的测试版 API 及其新版本继续处于启用状态。Amazon EKS 遵循与上游的 Kubernetes 1.24 相同的行为。默认情况下,控制新 API 操作和现有 API 操作的新功能的功能门控处于启用状态。这与上游 Kubernetes 一致。有关更多信息,请参阅 GitHub 上的 KEP-3136: Beta APIs Are Off by Default(KEP-3136:测试版 API 默认处于关闭状态)。

  • Kubernetes 1.24 中删除了对 Docker(也称为 Dockershim)的容器运行时接口(CRI)的支持。Amazon EKS 官方 AMI 将 containerd 作为唯一的运行时。在迁移到 Amazon EKS 1.24 或更高版本之前,必须删除对不再支持的引导脚本标志的任何引用。您还必须确保已为 Worker 节点启用 IP 转发。有关更多信息,请参阅 Amazon EKS 结束了对 Dockershim 的支持

  • 如果您已经为 Container Insights 进行了 Fluentd 配置,则必须先将 Fluentd 迁移到 Fluent Bit,然后才能更新集群。Fluentd 解析器配置为仅解析 JSON 格式的日志消息。与 dockerd 不同的是,containerd 容器运行时系统的日志消息不是 JSON 格式的。如果您不迁移到 Fluent Bit,一些配置的 Fluentd's 解析器将在 Fluentd 容器内生成大量错误。有关迁移的更多信息,请参阅将 Fluent Bit 设置为 DaemonSet 以将日志发送到 CloudWatch Logs

  • 在 Kubernetes 1.23 及早期版本中,具有不可验证的 IP 和 DNS 使用者备用名称(SAN)的 kubelet 服务证书会自动使用不可验证的 SAN 进行颁发。预置的证书中省略了这些不可验证的 SAN。在 1.24 版及更高版本的集群中,如果无法验证任何 SAN,则不会颁发 kubelet 服务证书。这会阻止 kubectl exec 和 kubectl logs 命令发挥作用。有关更多信息,请参阅 将集群升级到 Kubernetes 1.24 之前的证书签名注意事项

  • 升级使用 Fluent Bit 的 Amazon EKS 1.23 集群时,必须确保其运行 k8s/1.3.12 或更高版本。要实现这一点,您可以重新应用来自 GitHub 的最新适用 Fluent Bit YAML 文件。有关更多信息,请参阅《Amazon CloudWatch 用户指南》中的设置 Fluent Bit

  • 当跨多个可用区部署集群 Worker 节点时,您可以使用拓扑感知提示(Topology Aware Hints)来表明您希望将流量保持在区域内。在区域内路由流量有助于降低成本和提高网络性能。默认情况下,拓扑感知提示在 Amazon EKS 1.24 中处于启用状态。有关更多信息,请参阅 Kubernetes 文档中的 Topology Aware Hints(拓扑感知提示)。

  • Kubernetes 1.25 计划删除 PodSecurityPolicy(PSP)。PSPs 正在被 Pod Security Admission (PSA)(容器组(pod)安全准入(PSA))所取代。PSA 是一个内置的准入控制器,使用了 Pod Security Standards(PSS)(容器组(pod)安全标准(PSS))中所述的安全控件。PSA 和 PSS 都是测试版功能,默认情况下在 Amazon EKS 中处于启用状态。为了解决 1.25 版中的 PSP 删除问题,我们建议您在 Amazon EKS 中实施 PSS。有关更多信息,请参阅 Amazon 博客上的 Implementing Pod Security Standards in Amazon EKS(在 Amazon EKS 中实施容器组(pod)安全标准)。

  • Kubernetes 1.24 中删除了 client.authentication.k8s.io/v1alpha1 ExecCredential。ExecCredential API 通常在 Kubernetes 1.22 中可用。如果您使用依赖于 v1alpha1 API 的 client-go 凭证插件,请联系您的插件分销商,了解如何迁移到 v1 API。

  • 对于 Kubernetes 1.24,我们为上游 Cluster Autoscaler 项目贡献了一项功能,该功能简化了从/向零节点扩展 Amazon EKS 托管节点组的过程。以前,要让 Cluster Autoscaler 了解扩展到零节点的托管节点组的资源、标签和污点,您需要使用其负责的节点的详细信息来标记底层 Amazon EC2 Auto Scaling 组。现在,当托管节点组中没有正在运行的节点时,Cluster Autoscaler 会调用 Amazon EKS DescribeNodegroup API 操作。此 API 操作提供了 Cluster Autoscaler 所需有关托管节点组的资源、标签和污点的信息。此功能要求您向 Cluster Autoscaler 服务账户 IAM 策略添加 eks:DescribeNodegroup 权限。当为 Amazon EKS 托管节点组提供支持的自动扩缩组上 Cluster Autoscaler 标签的值与节点组本身发生冲突时,Cluster Autoscaler 倾向于使用自动扩缩组标签的值。这样您就能根据需要覆盖值。有关更多信息,请参阅 Autoscaling

  • 如果您打算在 Amazon EKS 1.24 中使用 Inferentia 或 Trainium 实例类型,则必须升级到 Amazon Neuron 设备插件 1.9.3.0 版或更高版本。有关更多信息,请参阅 Amazon Neuron 文档中的 Neuron K8 release [1.9.3.0](Neuron K8 版本 [1.9.3.0])。

  • 默认情况下,Containerd 已为 Pods 启用 IPv6。它将节点内核设置应用于 Pod 网络命名空间。因此,Pod 中的容器绑定到 IPv4127.0.0.1)和 IPv6::1)环回地址。IPv6 是通信的默认协议。在将集群更新到版本 1.24 之前,建议您测试您的多容器 Pods。修改应用程序,使其可以绑定到环回接口上的所有 IP 地址。大多数库都启用了 IPv6 绑定,绑定向后兼容 IPv4。当无法修改您的应用程序代码时,您有两种选择:

    • 运行 init 容器并将 disable ipv6 设置为 truesysctl -w net.ipv6.conf.all.disable_ipv6=1)。

    • 配置一个转换准入 Webhook 以在您的应用程序 Pods 旁注入 init 容器。

    如果您需要为所有节点上的所有 Pods 阻止 IPv6,则可能必须在实例上禁用 IPv6

  • Kubernetes API 服务器中的 goaway-chance 选项通过随机关闭连接,帮助防止 HTTP/2 客户端连接卡在单个 API 服务器实例上。连接关闭后,客户端将尝试重新连接,并且由于负载均衡,很可能会登录不同的 API 服务器。Amazon EKS 版本 1.24 已启用 goaway-chance 标志。如果您在 Amazon EKS 集群上运行的工作负载使用的客户端与 HTTP GOAWAY 不兼容,则建议您在连接终止时重新连接,以更新您的客户端处理 GOAWAY

有关完整的 Kubernetes 1.24 更改日志,请参阅https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1230

Kubernetes 1.23

Kubernetes 1.23 现已在 Amazon EKS 中推出。有关 Kubernetes 1.23 的更多信息,请参阅官方发布公告

重要
  • Kubernetes 树内插件至 Container Storage Interface(CSI)卷的迁移功能已启用。此功能支持使用相应的 Amazon EBS CSI 驱动程序替换适用于 Amazon EBS 的现有 Kubernetes 树内存储插件。有关更多信息,请参阅 Kubernetes 博客上的 Kubernetes 1.17 Feature: Kubernetes In-Tree to CSI Volume Migration Moves to Beta(1.17 功能:树内插件至 CSI 卷的迁移功能推出测试版)。

    该功能将树内 API 转换为等效的 CSI API,并将操作委派给替换 CSI 驱动程序。借助此功能,如果您使用的是属于这些工作负载的现有 StorageClassPersistentVolumePersistentVolumeClaim 对象,则可能不会有任何明显变化。该功能支持 Kubernetes 将树内插件的所有存储管理操作委派给 CSI 驱动程序。如果您在现有集群中使用 Amazon EBS 卷,请在将集群更新为 1.23 版之前,在集群中安装 Amazon EBS CSI 驱动程序。如果未在更新现有集群之前安装驱动程序,则可能会中断您的工作负载。如果您计划在新的 1.23 版集群中部署使用 Amazon EBS 卷的工作负载,请在集群中部署工作负载之前,在集群中安装 Amazon EBS CSI 驱动程序。有关如何在集群上安装 Amazon EBS CSI 驱动程序的说明,请参阅 Amazon EBS CSI 驱动程序。有关迁移功能的常见问题,请参阅 Amazon EBS CSI 迁移常见问题

  • Amazon 发布的 Amazon EKS 优化版 Windows AMI 的延期支持不适用于 Kubernetes 版本 1.23,但适用于 Kubernetes 版本 1.24 及更高版本。

  • Kubernetes 已停止支持版本 1.20 中的 dockershim,并已删除版本 1.24 中的 dockershim。有关更多信息,请参阅 Kubernetes 博客上的 Kubernetes 正在舍弃 Dockershim:承诺和后续步骤。从 Amazon EKS 1.24 版开始,Amazon EKS 将终止对 dockershim 的支持。从 Amazon EKS 版本 containerd 开始,Amazon EKS 官方 AMI 仅会将 1.24 作为唯一运行时。

    尽管 Amazon EKS 1.23 版继续支持 dockershim,我们仍建议您立即开始测试自己的应用程序,以识别和删除任何 Docker 依赖项。如此,您就可以做好将集群更新到版本 1.24 的准备。有关删除 dockershim 的更多信息,请参阅 Amazon EKS 结束了对 Dockershim 的支持

  • Kubernetes 已将 IPv4/IPv6 双堆栈联网功能升级到正式版本,可供 Pods、服务和节点使用。但是,Amazon EKS 和 Amazon VPC CNI plugin for Kubernetes 目前不支持双堆栈联网。您的集群可以将 IPv4IPv6 地址分配给 Pods 和服务,但不能同时分配两种地址类型。

  • Kubernetes 已将容器组(pod)安全准入(PSA)功能升级到测试版。该功能已默认启用。有关更多信息,请参阅 Kubernetes 文档中的 Pod Security Admission [容器组(pod)安全准入]。PSA 将取代容器组(pod)安全策略(PSP)准入控制器。PSP 准入控制器不受支持,计划在 Kubernetes 版本 1.25 中删除。

    PSP 准入控制器根据设置强制级别的特定命名空间标签,在命名空间中的 Pod 上强制实施 Pods 安全标准。有关更多信息,请参阅 Amazon EKS 最佳实践指南中的 Pod Security Standards (PSS) and Pod Security Admission (PSA) [容器组(pod)安全标准(PSS)和容器组(pod)安全准入(PSA)]。

  • 使用集群部署的 kube-proxy 映像现在是 Amazon EKS Distro(EKS-D)维护的最低要求基本映像。该映像包含最低要求的程序包,并且没有 Shell 或程序包管理器。

  • Kubernetes 已将临时容器升级到测试版。临时容器是在与现有 Pod 相同的命名空间中运行的暂时性容器。您可以用它们来观察 Pods 和容器的状态,以便排查问题并进行调试。当 kubectl exec 因容器崩溃或容器映像不包含调试实用程序而不足时,这种容器对于交互式排查问题尤其有用。包含调试实用程序的示例容器是 Distroless 映像。有关更多信息,请参阅 Kubernetes 文档中的 Debugging with an ephemeral debug container(使用临时调试容器进行调试)。

  • Kubernetes 已将 HorizontalPodAutoscaler autoscaling/v2 稳定 API 升级到正式版本。HorizontalPodAutoscaler autoscaling/v2beta2 API 已弃用。其在 1.26 中不可用。

  • Kubernetes API 服务器中的 goaway-chance 选项通过随机关闭连接,帮助防止 HTTP/2 客户端连接卡在单个 API 服务器实例上。连接关闭后,客户端将尝试重新连接,并且由于负载均衡,很可能会登录不同的 API 服务器。Amazon EKS 版本 1.23 已启用 goaway-chance 标志。如果您在 Amazon EKS 集群上运行的工作负载使用的客户端与 HTTP GOAWAY 不兼容,则建议您在连接终止时重新连接,以更新您的客户端处理 GOAWAY

有关完整的 Kubernetes 1.23 更改日志,请参阅https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md#changelog-since-v1220