Amazon EKS KS Kubernetes 版本 - Amazon EKS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon EKS KS Kubernetes 版本

该 Kubernetes 项目发展迅速,提供了新功能、设计更新和错误修复。社区将发布新的 Kubernetes 次要版本,如 1.20,一般大约每三个月提供一次,每个次要版本在发布后大约支持 12 个月。

可用的亚马逊 EKS 库贝内特版本

以下 Kubernetes 版本目前可用于 Amazon EKS 中的新集群:

  • 1.20.4

  • 1.19.8

  • 1.18.16

  • 1.17.17

  • 1.16.15

除非您的应用程序需要特定版本的 Kubernetes,否则我们建议您为您的集群选择 Amazon EKS 支持的最新可用 Kubernetes 版本。随着新 Kubernetes 版本在 Amazon EKS 中提供,我们建议您主动将集群更新为使用最新的可用版本。有关更多信息,请参阅 更新集群。有关更多信息,请参阅 亚马逊 EKS 库贝内特人发布日历亚马逊 EKS 版本支持和常见问题

Kubernetes 1.20

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

Important

在 Kubernetes 1.20 Amazon EKS 集群中,现支持以下 Kubernetes 功能:

  • API 优先级和公平性已达到测试状态,默认情况下处于启用状态。这允许kube-apiserver按优先级对传入请求进行分类。

  • 运行时间表已达到稳定状态。这些区域有:RuntimeClass资源提供了一种机制,用于支持集群中的多个运行时,并将有关该容器运行时的信息显示到控制平面。

  • 进程 ID 限制现已升级到正式发布。

  • 库贝特尔调试已达到测试版状态。kubectl debug提供了对常见调试工作流的支持,直接从kubectl

  • Docker 容器运行时间现已弃用。库贝内特人社区已经写了博客帖子关于这一点的详细信息与一个专门的常见问题页面。Docker 生产的图像可以继续使用,并且可以像他们一样工作。您可以安全地忽略在 kubelet 启动日志中打印的 dockershim 弃用警告消息。EKS 最终将移植到 EKS 优化的 Amazon Linux 2 AMI 的运行时间。您可以按照容器路线图issue了解更多信息。

  • 作为 FQDN 的容器主机名已升级到测试状态。此功能允许将容器的主机名设置为其完全限定域名 (FQDN),从而能够将内核的主机名字段设置为容器的 FQDN。

  • 客户端转入凭据插件现在可以通过KUBERNETES_EXEC_INFO环境变量。此增强功能允许 Go 客户端使用外部凭据提供程序(如密钥管理系统 (KMS))进行身份验证。

有关完整的 Kubernetes 更新日志,请参阅https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md

Kubernetes 1.19

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

Important

  • 从 1.19 开始,亚马逊 EKS 不再添加kubernetes.io/cluster/<cluster-name>标签添加到集群创建期间传入的子网。仅当您想影响 Kubernetes 服务控制器或AWS负载平衡器控制器放置弹性 Load Balancer。有关在集群创建过程中传递给 Amazon EKS 的子网的要求的更多信息,请参阅集群 VPC 注意事项

    • 更新为 1.19 的现有群集上不会修改子网标签。

    • 这些区域有:AWSLoad Balancer 控制器版本v2.1.1和之前需要<cluster-name>子网标签。在版本v2.1.2和更高版本,您可以指定标签以优化子网发现,但这不是必需的。有关的更多信息。AWSLoad Balancer 器控制器,请参阅AWSLoad Balancer。有关使用负载均衡器时子网标记的更多信息,请参阅Amazon EKS 上的 Application Load BalancingAmazon EKS 上的网络负载均衡器

  • 您不再需要为需要访问 Web 身份令牌文件以便与服务账户的 IAM 角色一起使用的非根容器提供安全上下文。有关更多信息,请参阅 。服务账户的 IAM 角色预计服务帐户量中的文件权限处理建议(位于 GitHub 上)。

  • 容器标识 Webhook 已更新,以解决缺少启动探测GitHub 问题。Webhook 现在还支持注释来控制令牌过期。有关更多信息,请参阅 。GitHub 拉取请求

  • CoreDNS 1.8.0 版是亚马逊 EKS 1.19 集群的推荐版本。默认情况下,此版本安装在新的亚马逊 EKS 1.19 集群中。有关更多信息,请参阅 管理 CoreDNS 附加组件

  • 亚马逊 EKS 优化的亚马逊 Linux 2 AMI 包括库贝内特版本 1.19 的 Linux 内核版本 5.4。有关更多信息,请参阅 Amazon EKS 优化 Amazon Linux AMI

  • 这些区域有:CertificateSigningRequest API已被提升为稳定certificates.k8s.io/v1,并进行以下更改:

    • spec.signerName现在需要。您无法为创建请求kubernetes.io/legacy-unknowncertificates.k8s.io/v1API。

    • 您可以继续使用kubernetes.io/legacy-unknown签名者名称与certificates.k8s.io/v1beta1API。

    • 您可以继续请求对非节点服务器证书(webhook)签名 CSR,例如,使用certificates.k8s.io/v1beta1API。这些 CSR 不是自动批准的。

    • 要批准证书,特权用户需要kubectl1.18.8 或更高版本。

    有关证书 v1 API 的更多详细信息,请参阅证书签名请求在 Kubernetes 文档中。

以下亚马逊 EKS Kubernetes 资源对于 Kubernetes 控制平面工作至关重要。我们建议您不要删除或编辑它们。

许可 Kind Namespace Reason
eks:certificate-controller Rolebinding kube-system 影响控制平面中的签名者和批准者功能。
eks:certificate-controller Role kube-system 影响控制平面中的签名者和批准者功能。
eks:certificate-controller ClusterRolebinding All 影响 kubelet 请求服务器证书的能力,这会影响某些群集功能,如kubectl execkubectl logs

在 Kubernetes 1.19 Amazon EKS 集群中,现支持以下 Kubernetes 功能:

  • 这些区域有:ExtendedResourceToleration入门控制器。此接纳控制器会自动向请求扩展资源(例如 GPU)的容许添加污染容忍,因此您无需手动添加容差。有关更多信息,请参阅 。扩展资源容忍在 Kubernetes 文档中。

  • 由树内 Kubernetes 服务控制器置备的弹性负载均衡器(CLB 和 NLB)支持过滤作为实例目标包含的节点。这有助于防止在大型集群中达到目标组限制。有关更多信息,请参阅相关的GitHub 问题service.beta.kubernetes.io/aws-load-balancer-target-node-labels位于下注释其他 ELB 注释在 Kubernetes 文档中。

  • 容器拓扑扩展已达到稳定状态。您可以使用拓扑扩散约束来控制集群在故障域(如区域、区域、节点和其他用户定义的拓扑域)之间的分布方式。这有助于实现高可用性以及高效的资源利用率。有关更多信息,请参阅 。容器拓扑扩散约束在 Kubernetes 文档中。

  • 入口 API 已达到正式公开发布。有关更多信息,请参阅 。Ingress在 Kubernetes 文档中。

  • 默认情况下,终端节点处于启用状态。终端节点是一种新的 API,它为终端 API 提供了更具可扩展性和可扩展性的替代方案,用于跟踪支持服务的 Pods 的 IP 地址、端口、就绪性和拓扑信息。有关更多信息,请参阅 。使用终端节点扩展库贝内特网络在库贝内特斯博客中。

  • 现在可以将密钥卷和 ConfigMap 卷标记为不可变卷,如果群集中存在许多密码卷和 ConfigMap 卷,这将显著减少 API 服务器上的负载。有关更多信息,请参阅 。ConfigMap密钥在 Kubernetes 文档中。

有关完整的 Kubernetes 更新日志,请参阅https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.19.md

Kubernetes 1.18

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

在 Kubernetes 1.18 Amazon EKS 集群中,现支持以下 Kubernetes 功能:

  • 拓扑管理器已达到测试版状态。此功能允许 CPU 和设备管理器协调资源分配决策,通过机器学习和分析工作负载优化低延迟。有关更多信息,请参阅 。控制节点上的拓扑管理策略在 Kubernetes 文档中。

  • 服务器端应用将使用新的测试版更新。此功能跟踪和管理对所有新 Kubernetes 对象字段的更改,让您知道什么时候更改了资源。有关更多信息,请参阅 。什么是服务器端应用?在 Kubernetes 文档中。

  • 一个新的pathType字段和一个新的IngressClass资源已添加到入口规范。这些功能使自定义入口配置变得更加简单,并且受AWSLoad Balancer(以前称为 ALB 入口控制器)。有关更多信息,请参阅 。库贝内特语文档中库贝内特语 1.18 中的入口 API 的改进。

  • 可配置的水平容器自动缩放行为。有关更多信息,请参阅 。Support 可配置的扩展行为在 Kubernetes 文档中。

  • 在 1.18 集群中,您不再需要包含AWS_DEFAULT_REGION=<region-code>环境变量添加到 Pod,无论是使用变异 Web 钩子还是手动配置环境变量。您仍然需要在早期版本中包含所有容器的变量。

有关完整的 Kubernetes 更新日志,请参阅https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.18.md

Kubernetes 1.17

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

重要
  • EKS 尚未启用CSIMigrationAWS功能标志。将在将来的版本中启用此功能,以及详细的迁移说明。有关 CSI 迁移的详细信息,请参阅Kubernetes 博客

  • 将集群从 1.16 更新到 1.17 将失败,如果AWSFargate 豆荚有一个kubelet较早于 1.16 的次要版本。在将集群从 1.16 更新到 1.17 之前,您需要回收您的 Fargate 窗格,以便它们的kubelet为 1.16,然后尝试将群集更新为 1.17。要在 1.15 或更高版本的群集上回收 Kubernetes 部署,请使用以下命令。

    kubectl rollout restart deployment <deployment-name>

在 Kubernetes 1.17 Amazon EKS 集群中,现支持以下 Kubernetes 功能:

有关完整的 Kubernetes 更新日志,请参阅https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.17.md

Kubernetes 1.16

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

重要
  • Kubernetes 1.16 删除了许多已停产的 API。将集群更新到 1.16 之前,可能需要对应用程序进行更改。仔细遵循 1.16更新先决条件,然后再更新。

  • 从 1.16 开始,Amazon EKS 证书颁发机构将遵守具有 SAN X.509 扩展的证书签名请求,这样就可以解决EKS CA 应该支持 SAN x509 扩展功能请求。

在 Kubernetes 1.16 Amazon EKS 集群中,现支持以下 Kubernetes 功能:

  • CSI 规范中的卷扩展已转移到测试版,这样可以调整任何 CSI 规范卷插件的大小。有关更多信息,请参阅 Kubernetes CSI 文档中的卷扩展。最新版本的EBS CSI 驱动程序支持在 Amazon EKS 1.16 集群上运行时扩展卷。

  • Windows GMSA 支持已从 Alpha 升级到测试版,现在受 Amazon EKS 支持。有关更多信息,请参阅 Kubernetes 文档中的为 Windows Pods 和容器配置 GMSA

  • 新注释:service.beta.kubernetes.io/aws-load-balancer-eip-allocations 在服务类型 LoadBalancer 上可用于为网络负载均衡器分配弹性 IP 地址。有关更多信息,请参阅 。Support EIP 分配AWSNLBGitHub 问题。

  • 服务负载均衡器的终结器保护现在处于测试阶段,默认情况下处于启用状态。服务负载均衡器终结器保护可确保为 Kubernetes Service 对象(如网络负载平衡器,将在删除该服务后被销毁或释放。有关更多信息,请参阅 Kubernetes 文档中的垃圾收集负载均衡器

  • Kubernetes 自定义资源定义和准入 Webhook 可扩展性机制都已达到通用版水平。有关更多信息,请参阅 Kubernetes 文档中的自定义资源动态准入控制

  • 服务器端应用功能已达到测试状态,默认情况下处于启用状态。有关更多信息,请参阅 Kubernetes 文档中的服务器端应用

  • 默认情况下,CustomResourceDefaulting 功能被提升为测试版,默认情况下处于启用状态。默认值可以通过 apiextensions.k8s.io/v1 API 在结构架构中指定。有关更多信息,请参阅 Kubernetes 文档中的指定结构架构

有关完整的 Kubernetes 1.16 更新日志,请参阅 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.16.md

亚马逊 EKS 库贝内特人发布日历

注意

只有一个月和一年的日期是近似的,并在已知的时候使用确切的日期进行更新。

Kubernetes 版本 上游版本 Amazon EKS 版本 Amazon EKS 终止支持
1.16 2019 年 9 月 8 日 2020 年 4 月 30 日 2021 年 9 月 27 日
1.17 2019 年 12 月 9 日 2020 年 7 月 10 日 2021 年 11 月 2 日
1.18 2020 年 3 月 23 日 2020 年 10 月 13 日 2022 年 2 月 18 日
1.19 2020 年 8 月 26 日 2021 年 2 月 16 日 2022 年 4 月
1.20 2020 年 12 月 8 日 2021 年 5 月 18 日 2022 年 7 月
1.21 2021 年 4 月 8 日 2021 年 7 月 19 日 2022 年 9 月

亚马逊 EKS 版本支持和常见问题

为了为 Kubernetes 版本提供 Kubernetes 社区支持,Amazon EKS 致力于在任意时间支持至少四个生产就绪型 Kubernetes 版本。我们将会在结束支持之日前至少 60 天宣告给定 Kubernetes 次要版本的支持结束日期。鉴于 Amazon EKS 新 KS 版本的鉴定和发布流程,Amazon EKS 上 Kubernetes 版本的支持结束日期将于 Kubernetes 项目停止支持上游版本之日或者之后。

常见问题

Q: 亚马逊 EKS 支持库贝内特版本的时间是多久?

A: Kubernetes 版本在亚马逊 EKS 上首次提供后,在 14 个月内完全支持。即使上游 Kubernetes 不再支持 Amazon EKS 上可用的版本也是如此。我们支持适用于 Amazon EKS 支持的 Kubernetes 版本的安全修补程序。

Q: 在亚马逊 EKS 上的 Kubernetes 版本的支持结束时,是否会通知我?

A: 是。如果您账户中的任何群集正在运行该版本即将结束支持,Amazon EKS 会通过AWS Personal Health Dashboard在亚马逊 EKS 上发布库贝内特人版本大约 12 个月后。通知包含支持日期的终止日期,即从通知发出之日起至少 60 天。

Q: 支持日期结束时会发生什么情况?

A: 在支持日期结束时,您将无法再使用不受支持的版本创建新的 Amazon EKS 集群。Amazon EKS 会在支持日期结束后通过逐步部署流程,自动将现有控制平面更新为最早的受支持版本。自动控制平面更新后,您必须手动更新集群加载项和 Amazon EC2 节点。有关更多信息,请参阅 要更新 Amazon EKS 集群的 Kubernetes 版本,请执行以下步骤:

Q: 在支持日期结束后,我的控制平面何时会自动更新?

A: 亚马逊 EKS 无法提供特定的时间范围。自动更新可以在支持日期结束后的任何时间进行。我们建议您在不依赖 Amazon EKS 自动更新流程的情况下采取主动行动并更新您的控制平面。有关更多信息,请参阅 更新集群

Q: 我可以将我的控制平面无限期地留在 Kubernetes 版本上吗?

A: 否。 云安全性位于AWS是最高优先级。Amazon EKS 不允许控制平面停留在已达到支持终止的版本上。

Q: 亚马逊 EKS 支持哪些 Kubernetes 功能?

A: 亚马逊 EKS 支持 Kubernetes API 的所有正式发布功能,以及默认启用的测试版功能。不支持 Alpha 功能。

Q: Amazon EKS 托管节点组是否会随集群控制平面版本一起自动更新?

A: 否。 托管节点组在您的账户中创建 Amazon EC2 实例。当您或 Amazon EKS 更新您的控制平面时,这些实例不会自动升级。如果 Amazon EKS 自动更新您的控制平面,则托管节点组上的 Kubernetes 版本可能比控制平面早于一个以上版本。如果托管节点组包含运行的 Kubernetes 版本比控制平面早于一个版本的实例,则节点组在节点组的 部分计算选项卡配置选项卡中的集群。如果节点组具有可用版本更新,立即更新显示在控制台中节点组旁边。有关更多信息,请参阅 更新托管节点组。我们建议您在控制平面和节点上保持相同的 Kubernetes 版本。

Q: 自我管理的节点组是否与群集控制平面版本一起自动更新?

A: 否。 自我托管节点组在您的账户中包含 Amazon EC2 实例。当您或 Amazon EKS 更新控制平面版本时,这些实例不会自动升级。自我管理的节点组在控制台中没有任何需要更新的指示。您可以查看kubelet版本,方法是在节点上选择节点列表概述选项卡,以确定哪些节点需要更新。您必须手动更新节点。有关更多信息,请参阅 自行管理的节点更新

Kubernetes 项目测试最多两个次要版本的控制平面和节点之间的兼容性。例如,当由 1.20 控制层面协调时,1.18 节点继续运行。但是,建议不要在控制平面后面运行具有持续两个次要版本的节点的群集。有关更多信息,请参阅 Kubernetes 文档中的 Kubernetes 版本和版本倾斜支持政策。我们建议您在控制平面和节点上保持相同的 Kubernetes 版本。

Q: Fargate 上运行的舱是否通过自动集群控制平面版本升级自动升级?

是。Fargate 舱运行在AWS亚马逊 EKS 侧拥有的账户责任共担模式。亚马逊 EKS 使用 Kubernetes 驱逐 API 尝试优雅地排出在 Fargate 上运行的舱。有关更多信息,请参阅 。驱逐 API在 Kubernetes 文档中。如果一个容器无法被驱逐,则亚马逊 EKS 会发出一个 Kubernetesdelete pod命令。我们强烈建议将 Fargate 窗格作为复制控制器的一部分运行,如 Kubernetes 部署,以便在删除后自动重新安排容器。有关更多信息,请参阅 。部署在 Kubernetes 文档中。新版本的 Fargate 容器部署了一个kubelet版本,该版本与已更新的群集控制平面版本相同。

重要

如果更新控制平面,则必须自行更新 Fargate 节点。要更新 Fargate 节点,请删除由节点表示的 Fargate 容器,然后重新部署容器。新容器部署时使用kubelet版本,该版本与您的集群版本相同。