Amazon EKS Kubernetes 版本 - Amazon EKS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

Amazon EKS Kubernetes 版本

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

可用的 Amazon EKS Kubernetes 版本

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

  • 1.18.9

  • 1.17.12

  • 1.16.15

  • 1.15.12

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

Kubernetes 1.18

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

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

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

  • 服务器端应用更新为新的测试版。此功能跟踪和管理对所有新 Kubernetes 对象的字段的更改,从而让您了解资源发生了什么变化以及何时发生更改。有关更多信息,请参阅 Kubernetes 文档中的什么是服务器端应用?

  • 向入口规范中添加了一个新的 pathType 字段和一个新的 IngressClass 资源。这些功能简化了自定义入口配置,并且受 AWS 负载均衡器控制器(以前称为 ALB 入口控制器)的支持。有关更多信息,请参阅 Kubernetes 文档中的 Kubernetes 1.18 中的入口 API 的改进

  • 可配置水平 Pod 自动扩展行为。有关更多信息,请参阅 Kubernetes 文档中的支持可配置扩展行为

  • 在 1.18 集群中,无论您使用更改 Web 挂钩还是手动配置环境变量,都不再需要在将 AWS_DEFAULT_REGION=<region-code> 角色用于中国区域的服务账户时为 Pod 包含 IAM 环境变量。您仍需要包含早期版本中所有 Pod 的变量。

有关完整的 Kubernetes 1.18 更新日志,请参阅 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 博客

  • 如果您的任何 AWS Fargate Pod 的 kubelet 次要版本低于 1.16,则将集群从 1.16 更新为 1.17 将失败。在将集群从 1.16 更新为 1.17 之前,您需要回收 Fargate Pod,以便它们的 kubelet 在尝试将集群更新为 1.17 之前为 1.16。要回收 1.15 或更高版本集群上的 Kubernetes 部署,请使用以下命令。

    kubectl rollout restart deployment <deployment-name>

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

有关完整的 Kubernetes 1.17 更新日志,请参阅 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 应遵守来自 GitHub 的 SAN x509 扩展功能请求。

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

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

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

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

  • 服务负载均衡器的终结器保护现在处于测试阶段,默认情况下处于启用状态。服务负载均衡器终结器保护可确保在删除服务时销毁或释放为 Kubernetes Service 对象(如 AWS Network Load Balancer)分配的任何负载均衡器资源。有关更多信息,请参阅 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.

Kubernetes 1.15

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

重要

从 1.15 开始,Amazon EKS 不再标记包含您的集群的 VPC。

  • 集群的 VPC 内的子网仍被标记。

  • 在 1.15 的现有集群更新上,不会修改 VPC 标签。

重要

Amazon EKS 已将 Pod 身份 Webhook 的重新调用策略设置为 IfNeeded。如果 App Mesh sidecar 注入器等其他转换管理 webhook 更改了对象,这将允许重新调用 webhook。有关 App Mesh 附加注入器的更多信息,请参阅安装附加注入器.

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

  • EKS 现在支持为网络负载均衡器配置传输层安全性 (TLS) 终止、访问日志和源范围。有关更多信息,请参阅 GitHub 上的 AWS 上的网络负载均衡器支持

  • 提高了自定义资源定义 (CRD) 的灵活性,包括在不同版本之间进行动态转换的能力。有关更多信息,请参阅 GitHub 上的使用 CustomResourceDefinitions 扩展 Kubernetes API

  • 对于 Kubernetes 1.15 版集群,NodeLocal DNSCache 处于试用阶段。此功能通过在集群节点上运行 DNS 缓存代理作为 DaemonSet 来帮助提高集群 DNS 性能。有关更多信息,请参阅 GitHub 上的在 Kubernetes 集群中使用 NodeLocal DNSCache

    注意

    在 Amazon EC2 上运行 CoreDNS 时,我们建议不要在配置中使用 force_tcp,并确保 options use-vc 未在 /etc/resolv.conf 中设置。

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

Amazon EKS Kubernetes 版本日历

注意

仅包含月份和年份的日期是近似值,并在已知日期时用确切日期进行更新。

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

Amazon EKS 版本支持和常见问题

为了支持 Kubernetes 版本 Kubernetes 社区,Amazon EKS 致力于在任何给定时间支持至少四个生产就绪的 Kubernetes 版本。我们将在支持结束日期前至少 60 天宣布给定 Kubernetes 次要版本的支持结束日期。由于新 Kubernetes 版本的 Amazon EKS 资格认证和发布过程,Amazon EKS 上 Kubernetes 版本的支持结束日期将等于或晚于 Kubernetes 项目停止支持上游版本的日期。

常见问题

问:Amazon EKS 支持 Kubernetes 版本的时间有多长?

答:Kubernetes 版本在 Amazon EKS 上首次提供后 14 个月内完全受支持。即使上游 Kubernetes 不再支持 上可用的版本也是如此。Amazon EKS. 我们向后移植适用于 Amazon EKS 上支持的 Kubernetes 版本的安全补丁。

问:在 Amazon EKS 上,什么时候支持 Kubernetes 版本的终止?

答:在 Amazon EKS 上发布某个版本后大约 12 个月(通常是新版本发布时),如果账户中的任何集群在即将结束支持时运行该版本,则 Amazon EKS 将通过 AWS Personal Health Dashboard 发送通知。通知将包括终止支持的日期,即距通知日期至少 60 天。

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

答:在支持期结束时,您将无法再使用不受支持的版本创建新的 Amazon EKS 集群。在支持结束日期后,现有集群会通过逐步部署过程自动更新为最早的支持版本。在自动控制层面更新后,您仍需要手动更新集群附加组件。有关更多信息,请参阅 更新现有集群.

问:当我的集群在支持结束日期后确切被自动更新时?

答:Amazon EKS 无法提供特定的时间范围。自动更新可以在支持结束日期后随时发生。我们建议您采取主动的措施并更新集群,而不依靠 Amazon EKS 自动更新过程。有关更多信息,请参阅 更新集群.

问:我是否可以将集群无限期地保留在 Kubernetes 版本上?

答:AWS 没有云安全性的优先级最高。Amazon EKS 不允许集群停留在已达到支持终止条件的版本上。

问:Amazon EKS 托管节点组是否与集群控制层面版本一起自动更新?

答:否。如果节点组可以更新到更高版本,控制台中会出现 Update now (立即更新)。您可以将节点组更新为与控制层面的 Kubernetes 版本相同的版本。有关更多信息,请参阅 更新托管节点组.

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

答:否。自行管理的节点组在控制台中不会有任何指示需要更新的指示。但是,您可以通过在集群的 kubeletOverview (概述) 选项卡上的 Nodes (节点) 列表中查看节点来查看节点上安装的 版本。有关更多信息,请参阅 自管理节点更新. Kubernetes 项目测试控制层面与最多两个次要版本的节点之间的兼容性。例如,当由 1.16 控制层面协调时,1.18 节点将继续运行。但是,不建议运行节点在控制层面后始终为两个次要版本的集群。有关更多信息,请参阅 Kubernetes 文档中的 Kubernetes 版本和版本倾斜支持策略。您可以一次更新一个节点组,直至与控制层面相同的版本。我们建议在您的控制层面和节点上保持相同的 Kubernetes 版本。

问:Fargate 节点是否与集群控制层面版本一起自动更新?

答:否。要在更新控制层面后更新 Fargate 节点,请删除节点表示的 Fargate Pod 并重新部署 Pod。新版本的 pod 使用与集群相同的 kubelet 版本进行部署。