帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
使用 AWS Outposts 在本地部署 Amazon EKS
您可以使用 Amazon EKS 在 AWS Outposts 上运行本地 Kubernetes 应用程序。您可以通过以下方式在 Outpost 上部署 Amazon EKS:
-
扩展集群 – 在 AWS 区域中运行 Kubernetes 控制面板,在您的 Outpost 上运行节点。
-
本地集群 – 在您的 Outpost 上运行 Kubernetes 控制面板和节点。
对于这两个部署选项,Kubernetes 控制面板完全由 AWS 托管。您可以使用在云中使用的相同 Amazon EKS API、工具和控制台,在 Outpost 上创建和运行 Amazon EKS。
下图显示了这些部署选项。
何时使用每个部署选项
本地和扩展集群都是通用部署选项,可以用于一系列应用程序。
扩展集群让您能够节省 Outpost 上的容量,因为 Kubernetes 控制面板在父 AWS 区域中运行。如果您的 Outpost 到 AWS 区域之间拥有可靠的网络连接,则此选项非常适合。建议在设计应用程序时断开与 AWS 区域的网络连接,以确保静态稳定性。Kubernetes 处理 Kubernetes 控制面板和节点之间网络断开连接的方式可能会导致应用程序停机。有关 Kubernetes 的行为的更多信息,请参阅 Kubernetes 文档中的调度、抢占和驱逐
本地集群使您能在 Outpost 上本地运行整个 Amazon EKS 集群。此选项可以降低因临时断开与云的网络连接而造成的应用程序停机风险。光纤中断或天气事件可能会导致网络断开连接。由于整个 Amazon EKS 集群在 Outpost 上本地运行,应用程序仍然可用。您可以在断开与云的网络连接期间执行集群操作。如果需要通过网络断开连接继续运行 Kubernetes,或数据驻留法规有要求,请选择本地集群。
双本地集群实现
Amazon EKS 支持在 Outposts 机架上使用双本地集群实现。对于在 Outpost 上运行的 EC2 实例,Outpost 配置为将 Amazon EBS 或 Amazon EC2 实例存储作为实例的根卷类型。对于本地集群的控制面板,Amazon EKS 使用的实现取决于以下配置:
-
使用 Amazon EBS 配置的 AWS Outposts。Kubernetes 控制面板将在您的 Outpost 上的 AWS 账户中运行,并在三个由 Amazon EBS 支持的 Amazon EC2 实例上堆叠了
etcd。有关更多信息,请参阅 在 AWS Outposts 上创建本地 Amazon EKS 集群以实现高可用性。 -
使用 EC2 实例存储配置的 AWS Outposts。Amazon EKS 已部署了更新后的本地集群架构。Kubernetes 控制面板将在 Outpost 上的 AWS 托管式服务账户中的 6 个 Amazon EC2 实例上运行,其中 3 个实例专用于
etcd,另外 3 个实例用于其他控制面板组件。该实现与云端 Amazon EKS 更相近,遵循 Amazon EKS Kubernetes 版本生命周期,并支持多种其他功能,例如 Amazon EKS 附加组件和基于 BottleRocket 的 Worker 节点(除 AL2023 之外)。该实现已在所有提供 AWS Outposts 的标准 AWS 区域开放。有关更多信息,请参阅 使用 EC2 实例存储配置的 AWS Outposts 上的 Amazon EKS 本地集群概述。
下表总结了每种实现中的可用功能。
部署选项比较
下表比较了扩展集群实现和双本地集群实现之间的区别。
| 功能 | 扩展集群 | 使用 EBS 在 Outposts 上配置的本地集群 | 使用 EC2 实例存储在 Outposts 上配置的本地集群 |
|---|---|---|---|
|
Kubernetes 控制面板位置 |
AWS 区域 |
Outpost |
Outpost |
|
Kubernetes 控制面板账户 |
AWS 账户 |
您的 AWS 账户 |
AWS 托管式账户 |
|
Kubernetes 控制面板拓扑结构 |
云托管 |
3 个 Amazon EC2 实例,堆叠 etcd |
6 个 Amazon EC2 实例(3 |
|
控制面板存储 |
云托管 |
Amazon EBS |
Amazon EC2 实例存储 |
|
区域可用性 |
请参阅服务端点 |
美国东部(俄亥俄州)、美国东部(弗吉尼亚州北部)、美国西部(北加利福尼亚)、美国西部(俄勒冈州)、亚太地区(首尔)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京)、加拿大(中部)、欧洲地区(法兰克福)、欧洲地区(爱尔兰)、欧洲地区(伦敦)、中东(巴林)和南美洲(圣保罗)。 |
所有提供 AWS Outposts 的商业 AWS 区域 |
|
Kubernetes 次要版本 |
|||
|
平台版本 |
请参阅 Amazon EKS 平台版本 |
请参阅 Amazon EKS 平台版本 |
|
|
Outpost 外形规格 |
Outpost 机架 |
Outpost 机架 |
Outpost 机架 |
|
用户界面 |
AWS 管理控制台、AWS CLI、Amazon EKS API、 |
AWS 管理控制台、AWS CLI、Amazon EKS API、 |
AWS 管理控制台、AWS CLI、Amazon EKS API、AWS CloudFormation |
|
托管策略 |
AmazonEKSLocalOutpostClusterPolicy 和 AWS 托管策略:AmazonEKSLocalOutpostServiceRolePolicy |
||
|
集群 VPC 和子网 |
请参阅 为使用 EC2 实例存储配置的 AWS Outposts 上的 Amazon EKS 本地集群创建 VPC 和子网 |
||
|
集群终端节点访问 |
公共或私有,或者两者兼而有之 |
仅限私有 |
私有或公有与私有 |
|
Kubernetes API 服务器身份验证 |
AWS Identity and Access Management(IAM)、OIDC 和访问条目 |
IAM 和 |
IAM、OIDC、访问条目、 |
|
节点类型 |
仅自行管理 |
仅自行管理 |
仅自行管理 |
|
节点计算类型 |
Amazon EC2 按需 |
Amazon EC2 按需 |
Amazon EC2 按需 |
|
节点存储类型 |
Amazon EBS |
Amazon EBS |
本地 NVMe SSD |
|
Amazon EKS 优化版 AMI |
Amazon Linux、Windows 和 Bottlerocket |
Amazon Linux |
Amazon Linux 和 Bottlerocket |
|
IP 版本 |
仅限 |
仅限 |
仅限 |
|
附加组件 |
Amazon EKS 附加组件或自行管理的附加组件 |
自行管理的附加组件 |
Amazon EKS 附加组件(已验证列表)或自行管理的附加组件 |
|
默认容器网络接口 |
适用于 Kubernetes 的 Amazon VPC CNI 插件 |
适用于 Kubernetes 的 Amazon VPC CNI 插件 |
适用于 Kubernetes 的 Amazon VPC CNI 插件 |
|
Kubernetes 控制面板日志 |
Amazon CloudWatch Logs |
Amazon CloudWatch Logs |
Amazon CloudWatch Logs |
|
|
云托管 |
客户自行管理( |
由 Amazon EKS 托管 |
|
负载均衡 |
使用 AWS Load Balancer Controller 仅预调配应用程序负载均衡器(无网络负载均衡器) |
使用 AWS Load Balancer Controller 仅预调配应用程序负载均衡器(无网络负载均衡器) |
使用 AWS Load Balancer Controller 仅预调配应用程序负载均衡器(无网络负载均衡器) |
|
秘密信封加密 |
不支持 |
不支持 |
|
|
服务账户的 IAM 角色(IRSA) |
支持,请参阅服务账户的 IAM 角色 |
不支持 |
支持(需要到 AWS 区域的连接;网络连接断开期间不可用) |
|
EKS 容器组身份 |
不支持 |
支持(需要到 AWS 区域的连接;网络连接断开期间不可用) |
|
|
问题排查 |
重要
-
如果在 RAM 共享的 Outpost 上创建本地集群,则会使 Outpost 所有者拥有集群控制面板的物理访问权限
-
在 EC2 实例存储 Outposts 上,IRSA 和 EKS 容器组身份依赖 AWS 区域中的 AWS STS。在网络连接断开期间,使用 IRSA 或容器组身份的工作负载无法获得新的凭证。有关更多信息,请参阅 在使用 EC2 实例存储配置的 AWS Outposts 上准备 Amazon EKS 本地集群以在网络连接断开期间使用。