Amazon EKS 常见问题

Amazon EKS 自动模式

Amazon EKS 自动模式可让 AWS 上的 Kubernetes 集群管理实现完全自动化,通过自动预置基础设施、扩缩资源和管理核心附加组件简化运营,同时降低成本。EKS 自动模式提供安全、可扩缩的集群基础设施,这些基础设施由 AWS 管理且集成各种 Kubernetes 功能,如计算自动扩缩、容器组(pod)和服务联网、应用程序负载均衡、集群 DNS、块存储和 GPU 支持。它与 Kubernetes 一致,这意味着客户可以在 EKS 自动模式下,使用他们喜欢的与 Kubernetes 兼容的所有工具。在 EKS 集群中运行的应用程序现在可以使用 AWS 托管 EC2 实例、EBS 卷、负载均衡器以及使用经验证最佳实践进行配置、可自动扩缩、经过成本优化且保持最新的其他云资源,同时最大限度地降低成本和运营开销。

除 AWS GovCloud(美国)和中国区域外,在支持使用 EKS 的所有区域内,运行 Kubernetes 1.29 及更高版本的新 EKS 集群和现有 EKS 集群均可以使用 Amazon EKS 自动模式。要开始使用,只需通过 EKS API、AWS 管理控制台、eksctl 或您的首选基础设施即代码(IaC)工具在新集群或现有集群中启用 EKS 自动模式,并指定其 AWS 托管计算基础设施应使用的 IAM 角色即可。默认情况下,EKS 自动模式会在集群中创建最佳实践和通用计算扩缩配置,让您能够快速开始运行应用程序。如要进行深度自定义,您可以选择禁用这些默认设置,并在集群中使用 Kubernetes API 创建额外的计算扩缩和基础设施配置。

Amazon EKS 自动模式同时为 EKS 集群带来了集成的 Kubernetes 功能和 AWS 托管基础设施(专为现代应用程序构建)。它的功能是 Kubernetes 应用程序运行所需的基础,包括计算、存储、联网和监控。它们是 EKS 集成的一部分,您无需担心安装、扩展或管理。默认情况下,它们会根据 AWS 和 Kubernetes 最佳实践进行设置。对于高级用例,您可以通过在 EKS 自动模式的最佳实践之上进行构建,进一步自定义供应用程序运行的基础设施,而无需开展昂贵、持续的运营工作。为确保您的应用程序始终拥有所需的基础设施,EKS 自动模式会持续对其进行观测,并配置、创建和优化 AWS 托管资源(EC2 实例和 EBS 卷)来满足其需求。供应用程序运行的基础设施则会使用最新的安全和错误修复自动更新,从而确保安全性并保持最新,同时最大限度地减少对正在运行的应用程序造成的中断。

使用 Amazon EKS 自动模式与 EKS 集群中由客户管理的 AWS 基础设施相比,AWS 的责任有所增加。在启用 EKS 自动模式的情况下,除了操作 Kubernetes 集群控制面板外,AWS 还要负责保护、配置和管理 EKS 集群中应用程序运行所需的 AWS 基础设施。为此,使用 EKS 自动模式的 EKS 集群中的 AWS 基础设施资源(如 EC2 实例)与客户管理的同类资源相比存在局限性。例如,您无法通过 SSH 或 SSM 建立远程连接、修改实例 IAM 角色、替换根卷或将更多 ENI 附加到 EKS 自动模式管理的 EC2 实例上,因为这样做会限制 AWS 保护和管理它们的能力。

对于想要运行 EKS 的客户来说,搭配使用 AWS EKS 和 Fargate 仍然是一种选择,但 Amazon EKS 自动模式是我们建议客户后续使用的方法。EKS 自动模式与 Kubernetes 完全一致,支持 Fargate 无法支持的所有上游 Kubernetes 原语和平台工具,如 Istio。EKS 自动模式还完全支持所有 EC2 运行时购买选项,包括 GPU 和竞价型实例,使客户能够充分利用议定的 EC2 折扣和其他节省机制,这些都是搭配使用 EKS 和 Fargate 时所不可用的。此外,EKS 自动模式允许客户实现与 Fargate 相同的隔离模型,使用标准的 Kubernetes 调度功能来确保每个 EC2 实例运行一个单独的应用程序容器。通过采用 Amazon EKS 自动模式,客户可以获得在 AWS 上运行 Kubernetes 的所有好处:AWS 是一个与 Kubernetes 完全一致的平台,提供了充分利用 EC2 和各种购买选项的灵活性,同时保留了 Fargate 提供的基础设施管理中的易用性和抽象性。

Amazon EKS 自动模式通过三种方式帮助提高 EKS 集群的安全性:1/ 由 EKS 自动模式创建的 AWS 托管基础设施将根据 AWS 安全最佳实践进行配置,并根据互联网安全中心(CIS)的一级基准进行加固,包括:禁止远程访问、不可变的根文件系统和内核层强制访问控制。2/ EKS 自动模式的 AWS 托管 EC2 实例一上线,AWS 就会自动使用最新的安全和错误修复对其进行更新。AWS 会尽可能在不中断正在运行的应用程序或更换实例的情况下就地应用这些补丁。3/ 默认情况下,EKS 自动模式会为其 AWS 托管 EC2 实例设置十四(14)天的最长生命周期,帮助您满足整个行业的安全与合规性最佳实践。如果您的用例需要更短或更长的实例生命周期,您可以将 EKS 自动模式配置为满足您需求的持续时间,最长可配置 21 天。

能。在将 EKS 控制面板升级到新的 Kubernetes 版本后,由于应用程序的横向扩展,由 EKS 自动模式启动的新实例将运行与控制面板版本匹配的最新 Kubernetes 软件。与此同时,现有实例将逐步更新到与新 Kubernetes 版本匹配的 Kubernetes 软件。加上由 EKS 自动模式启动的实例默认有 14 天的最长生命周期,这意味着,在默认情况下,您的集群将在不迟于您升级 EKS 集群的 Kubernetes 版本后十四(14)天自动完全升级。

Amazon EKS 自动模式提供计算、存储、联网和监控等基本 Kubernetes 功能的集成和托管版本。这包括以下功能的托管版本:1/ 可提高安全性和方便实例管理的 EKS 自动模式代理;2/ containerd 容器运行时,一种支持 Kubernetes 有效运行容器的基本组件;3/ kubelet,用于管理每个计算实例上 Kubernetes 容器组(pod)的生命周期和运行状况;4/ 支持集群内路由的网络代理;5/ 与上游兼容的托管 Karpenter 控制器;6/ 用于存储的 EBS、EFS 和 S3 CSI 控制器;7/ AWS VPC 容器网络接口(CNI)的托管版本,用于 IP 地址管理、容器组(pod)联网和网络策略;8/ 用于集群内服务发现的 CoreDNS;以及 9/ 用于编排外部负载均衡器的 AWS 负载均衡器控制器。

使用 Amazon EKS 自动模式时,您无需安装或管理某些 EKS 附加组件,如 VPC CNI、CoreDNS、kube-proxy 和 CloudWatch Observability 代理,因为在 EKS 自动模式下,您的 EKS 集群已经包含这些附加组件所提供功能的集成版本。不过,如果您仍有工作负载尚未迁移到 EKS 自动模式,您需要继续为它们使用这些 EKS 附加组件。除了被 EKS 自动模式的集成功能所取代的附加组件外,其他 EKS 附加组件仍然可以在启用 EKS 自动模式的情况下,在集群上运行。

能。默认情况下,您可以使用 EC2 DescribeInstances API 或 AWS 管理控制台查看由 EKS 自动模式启动的托管 EC2 实例。由于这些实例由 AWS 管理,您在使用 EC2 API 时可以执行的操作将仅限于那些不影响 EKS 履行其扩展运营责任的能力的操作。默认情况下,EKS 自动模式提供非常适合常见用例的通用计算配置。如果需要,您可以自定义由 EKS 自动模式启动的 EC2 实例。您可以使用 EKS 自动模式的节点类 Kubernetes API 来修改 EKS 自动模式实例的运行时配置设置。

符合。当符合条件的 EC2 实例启动时,将自动应用计算类节省计划和预留实例。有关更多详细信息,请参阅定价页面

Amazon EKS 自动模式通过一组集成控制器提供 Kubernetes 功能,这些控制器可发送各种 Kubernetes 事件,帮助理解集群行为。

混合部署

您有三个 Amazon EKS 选项可实现混合部署:Amazon EKS、Amazon EKS Anywhere 和 Amazon EKS Connector。Amazon EKS 让您可以在 AWS 区域、AWS Local Zones、AWS Wavelength Zone 的 AWS 托管基础设施上运行节点,或者通过 AWS Outposts 和 Amazon EKS Hybrid Nodes 在您自己的本地设施中运行节点。AWS Outposts 是在您的设施中运行的、由 AWS 管理的基础设施,而 Amazon EKS Hybrid Nodes 在您的设施中、由您管理的裸机或虚拟化基础设施上运行。如果您需要在受隔离或受物理隔离的环境中运行,可使用 Amazon EKS Anywhere,它是一款由客户管理且受 AWS 支持的 Kubernetes 管理软件,在您管理的基础设施上运行。您也可以使用 Amazon EKS Connector 在 Amazon EKS 控制台中查看任何 Kubernetes 集群。有关本地和边缘部署的 Amazon EKS 选项的更多信息,请参阅 Amazon EKS 用户指南中的部署选项

您可以通过 Amazon EKS,使用与在 AWS 云中运行工作负载所用的相同集群在 AWS Outposts 上运行自我管理的节点。在使用 AWS Outposts 上的 Amazon EKS 时,您可以使用许多与您用于 AWS 云中工作负载的相同集成,包括用于计算的 Amazon EC2 实例、用于联网的 Amazon VPC 和 VPC CNI、用于存储的 Amazon EBS 卷以及用于入口的应用程序负载均衡器(ALB)。在 AWS Outposts 上拥有节点的 Amazon EKS 受 42U Outpost 机架的支持。您也可以使用 AWS Outposts 上的 Amazon EKS 本地集群,将整个 Kubernetes 集群部署在 AWS Outposts 上。如果运行 AWS Outposts 上的 Amazon EKS,您将需要为 Amazon EKS 集群和 AWS Outposts 容量付费。有关更多信息,请参阅 AWS Outposts 上的 Amazon EKS 用户指南

借助 Amazon EKS Hybrid Nodes,您可以将本地和边缘基础设施用作 Amazon EKS 集群中的节点。在使用 Amazon EKS Hybrid Nodes 时,AWS 负责管理由 AWS 托管的 Kubernetes 控制面板,您负责管理在本地或边缘环境中运行的混合节点。Amazon EKS Hybrid Nodes 可以跨环境统一 Kubernetes 管理,并将本地和边缘应用程序的 Kubernetes 控制面板管理工作转移到 AWS。Amazon EKS Hybrid Nodes 适用于任何本地硬件或虚拟机,您可以将 Amazon EKS Hybrid Nodes 与众多 Amazon EKS 功能配合使用,包括 Amazon EKS 附加组件、Amazon EKS 容器组身份、集群访问条目、集群洞察和扩展的 Kubernetes 版本支持。Amazon EKS Hybrid Nodes 与一系列 AWS 服务进行了原生集成,以实现集中监控、日志记录和身份管理。如果使用 Amazon EKS Hybrid Nodes,则在将混合节点连接到您的 Amazon EKS 集群后,您将需要按小时为混合节点的 vCPU 资源付费。有关更多信息,请参阅 Amazon EKS 定价

Amazon EKS Anywhere 通过自动化无差别的繁重工作(例如基础设施设置和 Kubernetes 集群生命周期操作)来简化本地和边缘环境中的 Kubernetes 集群管理。与 Amazon EKS 不同,Amazon EKS Anywhere 是一款由客户管理的产品,客户需负责 Amazon EKS Anywhere 集群的生命周期操作和维护。Amazon EKS Anywhere 基于 Kubernetes 的子项目 Cluster API(CAPI)构建而成,支持一系列基础设施,包括 VMware vSphere、裸机、Nutanix、Apache CloudStack 和 AWS Snow。Amazon EKS Anywhere 可以在受物理隔离的环境中运行,并提供与区域性 AWS 服务的可选集成来实现可观测性和身份管理。要获取对 Amazon EKS Anywhere 的支持和使用 AWS 提供的 Kubernetes 附加组件,您可以购买 Amazon EKS Anywhere 企业订阅

您可以使用 Amazon EKS Connector 注册和连接任何符合要求的 Kubernetes 集群到 AWS,并在 Amazon EKS 控制台中查看该集群。连接集群后,您可以在 Amazon EKS 控制台中查看该集群的状态、配置和工作负载。您可以使用此功能在 Amazon EKS 控制台中查看已连接的集群,但 Amazon EKS Connector 不支持通过 Amazon EKS 控制台对已连接的集群进行管理或更改操作。您无需为使用 Amazon EKS Connector 连接到 Amazon EKS 控制台的集群支付费用。

Amazon EKS Hybrid Nodes 是托管 Kubernetes 服务 Amazon EKS 的一项功能,而 Amazon EKS Anywhere 是由您管理且受 AWS 支持的一款 Kubernetes 管理软件。Amazon EKS Hybrid Nodes 适合拥有可连接到云的本地环境的客户,而 Amazon EKS Anywhere 则适合拥有受隔离或受物理隔离的本地环境的客户。在使用 Amazon EKS Hybrid Nodes 时,AWS 将负责管理 Kubernetes 控制面板的安全性、可用性和可扩展性,并且该控制面板托管在 AWS 云中,只有节点在您的基础设施上运行。而在使用 Amazon EKS Anywhere 时,您将负责管理完全在您的基础设施上运行的 Kubernetes 集群。Amazon EKS Hybrid Nodes 的使用没有预先承诺,也没有最低费用,您只需按小时支付集群和节点的使用费用。如果使用 Amazon EKS Anywhere,您可以购买 1 年期或 3 年期的 Amazon EKS Anywhere 企业订阅。

借助 Amazon EKS Hybrid Nodes,您可以将自己的物理机或虚拟机用于 Amazon EKS 集群中的节点。借助 AWS Outposts 上的 Amazon EKS,您可以将 AWS Outposts 上运行的 Amazon EC2 实例用于 Amazon EKS 集群中的节点。Amazon EKS Hybrid Nodes 和 AWS Outposts 上的 Amazon EKS 分别支持使用不同的 Amazon EKS 附加组件来实现联网和存储。有关可用于混合节点的 Amazon EKS 附加组件的更多信息,请参阅 Amazon EKS 用户指南中的为混合节点配置附加组件。如果使用 AWS Outposts 上的 Amazon EKS,您将需要为 Amazon EKS 集群和 AWS Outposts 容量付费。如果使用 Amazon EKS Hybrid Nodes,您将需要为 Amazon EKS 集群和节点使用量付费。