查看 Kubernetes 扩展支持版本的发布说明
本主题介绍有关扩展支持中每个 Kubernetes 版本需要注意的重要更改。升级时,请仔细检查集群新旧版本之间发生的变化。
Kubernetes 1.27
Kubernetes 1.27
现已在 Amazon EKS 中推出。有关 Kubernetes 1.27
的更多信息,请参阅官方发布公告
重要
-
已移除对 alpha
seccomp
注释seccomp.security.alpha.kubernetes.io/pod
和container.seccomp.security.alpha.kubernetes.io
注释的支持。alphaseccomp
注释在1.19
中已弃用,随着它们在1.27
中的移除,Pods
的seccomp
字段将不再自动填充seccomp
注释。反之,将会使用Pods
或容器的securityContext.seccompProfile
字段配置seccomp
配置文件 要检查您是否在集群中使用了弃用的 alphaseccomp
注释,请运行以下命令:kubectl get pods --all-namespaces -o json | grep -E 'seccomp.security.alpha.kubernetes.io/pod|container.seccomp.security.alpha.kubernetes.io'
-
kubelet
的--container-runtime
命令行参数已移除。Amazon EKS 的默认容器运行时系统自1.24
开始便已containerd
,从而不需要指定容器运行时系统。从1.27
开始,Amazon EKS 将忽略传递给任何引导脚本的--container-runtime
参数。重要的是不要将此参数传递给--kubelet-extra-args
,以防止在节点引导过程中出现错误。您必须从所有节点创建工作流和生成脚本中删除--container-runtime
参数。
-
Kubernetes
1.27
中的kubelet
将默认值kubeAPIQPS
增加到50
,将kubeAPIBurst
增加到100
。这些增强功能使kubelet
能够处理更多的 API 查询,从而缩短响应时间并提高性能。当Pods
的需求由于扩展要求而增加时,修订后的默认值可确保kubelet
能够有效地管理增加的工作负载。因此,Pod
启动速度更快,集群操作更有效。 -
您可以使用更精细的
Pod
拓扑结构来传播策略,例如minDomain
。此参数使您能够指定Pods
应分布的最小域数量。nodeAffinityPolicy
和nodeTaintPolicy
允许在管理Pod
分布时提供额外的精细度。这与您Pod’s
规范的topologySpreadConstraints
中的节点亲和性、污点和matchLabelKeys
字段一致。这样一来,便可以在滚动升级后选择Pods
进行发散计算。 -
Kubernetes
1.27
已升级到测试版,StatefulSets
的控制其PersistentVolumeClaims
(PVCs
)生命周期的新策略机制。新的PVC
保留策略可让您指定在删除StatefulSet
或缩减StatefulSet
中的副本时,通过StatefulSet
规范模板生成的PVCs
将会自动删除还是保留。 -
Kubernetes API 服务器中的 goaway-chance
选项通过随机关闭连接,帮助防止 HTTP/2
客户端连接卡在单个 API 服务器实例上。连接关闭后,客户端将尝试重新连接,并且由于负载均衡,很可能会登录不同的 API 服务器。Amazon EKS 版本1.27
已启用goaway-chance
标志。如果您在 Amazon EKS 集群上运行的工作负载使用的客户端与 HTTP GOAWAY不兼容,则建议您在连接终止时重新连接,以更新您的客户端处理 GOAWAY
。
有关完整 Kubernetes1.27
的更改日志,请参阅 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1260
Kubernetes 1.26
Kubernetes 1.26
现已在 Amazon EKS 中推出。有关 Kubernetes 1.26
的更多信息,请参阅官方发布公告
重要
Kubernetes 1.26
不再支持 CRI v1alpha2
。如果容器运行时系统不支持 CRI v1
,这会导致 kubelet
不再注册该节点。这也意味着 Kubernetes 1.26
不支持 containerd 1.5
次要版本及更早版本。如果您使用的是 containerd,则需要先升级到 containerd 1.6.0
版本或更高版本,然后再将任何节点升级到 Kubernetes 1.26
。您还需要升级任何其他仅支持 v1alpha2
的容器运行时系统。有关更多信息,请咨询容器运行时系统供应商。默认情况下,Amazon Linux 和 Bottlerocket AMI 包含 containerd 1.6.6
版本。
-
在升级到 Kubernetes
1.26
之前,请将您的 Amazon VPC CNI plugin for Kubernetes 升级到1.12
版本或更高版本。如果您不升级到 Amazon VPC CNI plugin for Kubernetes 的1.12
或更高版本,则 Amazon VPC CNI plugin for Kubernetes 将会崩溃。有关更多信息,请参阅 Amazon VPC CNI。 -
Kubernetes API 服务器中的 goaway-chance
选项通过随机关闭连接,帮助防止 HTTP/2
客户端连接卡在单个 API 服务器实例上。连接关闭后,客户端将尝试重新连接,并且由于负载均衡,很可能会登录不同的 API 服务器。Amazon EKS 版本1.26
已启用goaway-chance
标志。如果您在 Amazon EKS 集群上运行的工作负载使用的客户端与 HTTP GOAWAY不兼容,则建议您在连接终止时重新连接,以更新您的客户端处理 GOAWAY
。
有关完整 Kubernetes1.26
的更改日志,请参阅 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1250
Kubernetes 1.25
Kubernetes 1.25
现已在 Amazon EKS 中推出。有关 Kubernetes 1.25
的更多信息,请参阅官方发布公告
重要
-
Amazon EKS 不支持 Amazon EC2
P2
实例,因为它们需要NVIDIA
驱动程序版本 470 或更早版本。 -
PodSecurityPolicy
(PSP)已在 Kubernetes1.25
中删除。PSPs 被容器组(pod)安全准入(PSA)和容器组(pod)安全标准 (PSS) 替代。PSA 是一个内置的准入控制器,它实施 PSS 中所述的安全控件。PSA 和 PSS 在 Kubernetes 1.25
中逐步达到稳定,并在 Amazon EKS 中被默认启用。如果您的集群中有 PSPs,则请确保在将集群升级到版本1.25
之前,从 PSP 迁移到内置的 Kubernetes PSS 或策略即代码解决方案。如果您不从 PSP 迁移,则您的工作负载可能会中断。有关更多信息,请参阅从旧版容器组(pod)安全策略(PSP)迁移。 -
Kubernetes 版本
1.25
包含了若干更改,这些更改会修改名为 API 优先级和公平性(APF)的现有功能的行为。在出现大量的请求期间,APF 可保护 API 服务器免受可能的过载影响。为此,它会限制在任何给定时间可以处理的并发请求数量。实现这一点的方法是对来自不同工作负载或用户的请求执行不同的优先级和限制。这种方法可确保优先处理关键应用程序或高优先级请求,同时防止低优先级请求使 API 服务器不堪重负。有关更多信息,请参见 Kubernetes 文档中的 API 优先级和公平性或《EKS 最佳实践指南》中的 API 优先级和公平性 。 这些更新是在 PR #10352
和 PR #118601 中推出的。以前,APF 对所有类型的请求会一视同仁,每个请求都会消耗并发请求限制的一个单位。APF 行为更改后,系统会将较高的并发单位分配给 LIST
请求,因为这些请求给 API 服务器带来了异常沉重的负担。API 服务器会估算LIST
请求将要返回的对象数量。然后按照返回的对象数量分配一个相适应的并发单位。升级到 Amazon EKS 版本
1.25
或更高版本后,此更新后的行为可能会导致有大量LIST
请求工作负载(以前可以正常运行)受到速率限制。这将通过 HTTP 429 响应代码来提示。为避免因LIST
请求受到速率限制而可能导致的工作负载中断,我们强烈建议您调整工作负载以降低此类请求的速率。您还可以通过调整 APF 设置,为关键请求分配更多容量,同时减少分配给非关键请求的容量,从而解决此问题。有关这些问题缓解技术的更多信息,请参阅《EKS 最佳实践指南》中的 防止请求被丢弃。 -
Amazon EKS
1.25
包括对集群身份验证的增强,其中包含更新的 YAML 库。如果在kube-system
命名空间中找到的aws-auth
ConfigMap
的 YAML 值以宏开头,则其中第一个字符是大括号,则应在大括号({ }
)之前和之后添加引号(" "
)。确保aws-iam-authenticator
版本v0.6.3
准确解析 Amazon EKS1.25
中的aws-auth
ConfigMap
需要此操作。 -
EndpointSlice
的测试版 API(discovery.k8s.io/v1beta1
)已在 Kubernetes1.21
中弃用,自 Kubernetes1.25
起不再提供。此 API 已更新为discovery.k8s.io/v1
。有关更多信息,请参阅 Kubernetes 文档中的 EndpointSlice。 AWS Load Balancer Controller v2.4.6
和更早版本使用v1beta1
端点与EndpointSlices
通信。如果您将EndpointSlices
配置用于 AWS Load Balancer Controller,则必须先升级到 AWS Load Balancer Controllerv2.4.7
,然后才能将 Amazon EKS 集群升级到1.25
。如果您在将EndpointSlices
配置用于 AWS Load Balancer Controller 时升级到1.25
,则控制器将崩溃并导致您的工作负载中断。要升级控制器,请参阅 使用 AWS 负载均衡器控制器路由互联网流量。 -
从 Kubernetes
1.25
开始,已不再提供 HorizontalPodAutoscaler 的测试版 API(autoscaling/v2beta1
)。该 API 已在版本1.23
中被弃用。迁移清单和 API 客户端以使用autoscaling/v2
HorizontalPodAutoscaler API 版本。有关更多信息,请参阅 Kubernetes 文档。
-
SeccompDefault
已提升到 Kubernetes1.25
中的测试版。通过在配置kubelet
时设置--seccomp-default
标志,容器运行时使用其RuntimeDefaultseccomp
配置文件,而不是无约束(seccomp disabled
)模式。默认配置文件提供了一组强大的安全默认值,同时保留了工作负载的功能。尽管此标志可用,但默认情况下,Amazon EKS 不启用此标志,因此 Amazon EKS 的行为实际上没有变化。如果愿意,您可以开始在您的节点上启用这个功能。有关更多详细信息,请参阅 Kubernetes 文档中的教程使用 seccomp 限制容器的系统调用。 -
Kubernetes
1.24
及更高版本中删除了对 Docker(也称为 dockershim)的容器运行时接口(CRI)的支持。Kubernetes1.24
及更高版本集群的 Amazon EKS 官方 AMIs 的唯一容器运行时是 containerd。在升级到 Amazon EKS1.24
或更高版本之前,删除对不再支持的引导脚本标志的任何引用。有关更多信息,请参阅 从 dockershim 迁移到 containerd。 -
对通配符查询的支持已在 CoreDNS
1.8.7
中被弃用并在 CoreDNS1.9
中被移除。此操作作为一项安全措施而执行。通配符查询不再起作用,并返回 NXDOMAIN 而不是 IP 地址。 -
Kubernetes API 服务器中的 goaway-chance
选项通过随机关闭连接,帮助防止 HTTP/2
客户端连接卡在单个 API 服务器实例上。连接关闭后,客户端将尝试重新连接,并且由于负载均衡,很可能会登录不同的 API 服务器。Amazon EKS 版本1.25
已启用goaway-chance
标志。如果您在 Amazon EKS 集群上运行的工作负载使用的客户端与 HTTP GOAWAY不兼容,则建议您在连接终止时重新连接,以更新您的客户端处理 GOAWAY
。
有关完整 Kubernetes1.25
的更改日志,请参阅 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#changelog-since-v1240
Kubernetes 1.24
Kubernetes 1.24
现已在 Amazon EKS 中推出。有关 Kubernetes 1.24
的更多信息,请参阅官方发布公告
重要
-
从 Kubernetes
1.24
开始,默认情况下集群中不启用新的测试版 API。默认情况下,现有的测试版 API 及其新版本继续处于启用状态。Amazon EKS 遵循与上游的 Kubernetes1.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 EKS1.24
或更高版本之前,必须删除对不再支持的引导脚本标志的任何引用。您还必须确保已为 Worker 节点启用 IP 转发。有关更多信息,请参阅 从 dockershim 迁移到 containerd。 -
如果您已经为 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)安全标准(PSS) 中所述的安全控件。PSA 和 PSS 都是测试版功能,默认情况下在 Amazon EKS 中处于启用状态。为了解决 1.25
版中的 PSP 删除问题,我们建议您在 Amazon EKS 中实施 PSS。有关更多信息,请参阅 AWS 博客上的 Implementing Pod Security Standards in Amazon EKS(在 Amazon EKS 中实施容器组(pod)安全标准)。 -
Kubernetes
1.24
中删除了client.authentication.k8s.io/v1alpha1
ExecCredential。ExecCredential API 通常在 Kubernetes1.22
中可用。如果您使用依赖于v1alpha1
API 的 client-go 凭证插件,请联系您的插件分销商,了解如何迁移到v1
API。 -
对于 Kubernetes
1.24
,我们为上游 Cluster Autoscaler 项目贡献了一项功能,该功能简化了从/向零节点扩展 Amazon EKS 托管节点组的过程。以前,要让 Cluster Autoscaler 了解扩展到零节点的托管节点组的资源、标签和污点,您需要使用其负责的节点的详细信息来标记底层 Amazon EC2 Auto Scaling 组。现在,当托管节点组中没有正在运行的节点时,Cluster Autoscaler 会调用 Amazon EKSDescribeNodegroup
API 操作。此 API 操作提供了 Cluster Autoscaler 所需有关托管节点组的资源、标签和污点的信息。此功能要求您向 Cluster Autoscaler 服务账户 IAM 策略添加eks:DescribeNodegroup
权限。当为 Amazon EKS 托管节点组提供支持的自动扩缩组上 Cluster Autoscaler 标签的值与节点组本身发生冲突时,Cluster Autoscaler 倾向于使用自动扩缩组标签的值。这样您就能根据需要覆盖值。有关更多信息,请参阅 Cluster Autoscaler。 -
如果您打算在 Amazon EKS
1.24
中使用 Inferentia 或 Trainium 实例类型,则必须升级到 AWS Neuron 设备插件 1.9.3.0 版或更高版本。有关更多信息,请参阅 AWS Neuron 文档中的 Neuron K8 release [1.9.3.0](Neuron K8 版本 [1.9.3.0])。 -
默认情况下,
Containerd
已为 Pods 启用IPv6
。它将节点内核设置应用于 Pod 网络命名空间。因此,Pod 中的容器绑定到IPv4
(127.0.0.1
)和IPv6
(::1
)环回地址。IPv6
是通信的默认协议。在将集群更新到版本1.24
之前,建议您测试您的多容器 Pods。修改应用程序,使其可以绑定到环回接口上的所有 IP 地址。大多数库都启用了IPv6
绑定,绑定向后兼容IPv4
。当无法修改您的应用程序代码时,您有两种选择:-
运行
init
容器并将disable ipv6
设置为true
(sysctl -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
。
有关完整 Kubernetes1.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 功能:Kubernetes 树内插件至 CSI 卷的迁移功能推出测试版
。 该功能将树内 API 转换为等效的 CSI API,并将操作委派给替换 CSI 驱动程序。借助此功能,如果您使用的是属于这些工作负载的现有
StorageClass
、PersistentVolume
和PersistentVolumeClaim
对象,则可能不会有任何明显变化。该功能支持 Kubernetes 将树内插件的所有存储管理操作委派给 CSI 驱动程序。如果您在现有集群中使用 Amazon EBS 卷,请在将集群更新为1.23
版之前,在集群中安装 Amazon EBS CSI 驱动程序。如果未在更新现有集群之前安装驱动程序,则可能会中断您的工作负载。如果您计划在新的1.23
版集群中部署使用 Amazon EBS 卷的工作负载,请在集群中部署工作负载之前,在集群中安装 Amazon EBS CSI 驱动程序。有关如何在集群上安装 Amazon EBS CSI 驱动程序的说明,请参阅 使用 Amazon EBS 存储 Kubernetes 卷。有关迁移功能的常见问题,请参阅 Amazon EBS CSI 迁移常见问题。 -
AWS 发布的 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
的更多信息,请参阅 从 dockershim 迁移到 containerd。 -
Kubernetes 已将
IPv4
/IPv6
双堆栈联网功能升级到正式版本,可供 Pods、服务和节点使用。但是,Amazon EKS 和 Amazon VPC CNI plugin for Kubernetes 目前不支持双堆栈联网。您的集群可以将IPv4
或IPv6
地址分配给 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
。
有关完整 Kubernetes1.23
的更改日志,请参阅 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md#changelog-since-v1220