

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 使用 Amazon Outposts 在本地部署 Amazon EKS
<a name="eks-outposts"></a>

您可以使用 Amazon EKS 在 Amazon Outposts 上运行本地 Kubernetes 应用程序。您可以通过以下方式在 Outpost 上部署 Amazon EKS：
+  **扩展集群** – 在 Amazon 区域中运行 Kubernetes 控制面板，在您的 Outpost 上运行节点。
+  **本地集群** – 在您的 Outpost 上运行 Kubernetes 控制面板和节点。

对于这两个部署选项，Kubernetes 控制面板完全由 Amazon 托管。您可以使用在云中使用的相同 Amazon EKS API、工具和控制台，在 Outpost 上创建和运行 Amazon EKS。

下图显示了这些部署选项。

![Outpost 部署选项](http://docs.amazonaws.cn/eks/latest/userguide/images/outposts-deployment-options.png)


## 何时使用每个部署选项
<a name="outposts-overview-when-deployment-options"></a>

本地和扩展集群都是通用部署选项，可以用于一系列应用程序。

扩展集群让您能够节省 Outpost 上的容量，因为 Kubernetes 控制面板在父 Amazon 区域中运行。如果您的 Outpost 到 Amazon 区域之间拥有可靠的网络连接，则此选项非常适合。建议在设计应用程序时断开与 Amazon 区域的网络连接，以确保静态稳定性。Kubernetes 处理 Kubernetes 控制面板和节点之间网络断开连接的方式可能会导致应用程序停机。有关 Kubernetes 的行为的更多信息，请参阅 Kubernetes 文档中的[调度、抢占和驱逐](https://kubernetes.io/docs/concepts/scheduling-eviction/)。

本地集群使您能在 Outpost 上本地运行整个 Amazon EKS 集群。此选项可以降低因临时断开与云的网络连接而造成的应用程序停机风险。光纤中断或天气事件可能会导致网络断开连接。由于整个 Amazon EKS 集群在 Outpost 上本地运行，应用程序仍然可用。您可以在断开与云的网络连接期间执行集群操作。如果需要通过网络断开连接继续运行 Kubernetes，或数据驻留法规有要求，请选择本地集群。

## 双本地集群实现
<a name="outposts-overview-two-local-cluster-implementations"></a>

Amazon EKS 支持在 Outposts 机架上使用双本地集群实现。对于在 Outpost 上运行的 EC2 实例，Outpost 配置为将 Amazon EBS 或 Amazon EC2 实例存储作为实例的[根卷](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/RootDeviceStorage.html)类型。对于本地集群的控制面板，Amazon EKS 使用的实现取决于以下配置：
+  **使用 Amazon EBS 配置的 Amazon Outposts。**Kubernetes 控制面板将在您的 Outpost 上的 Amazon 账户中运行，并在三个由 Amazon EBS 支持的 Amazon EC2 实例上堆叠了 `etcd`。有关更多信息，请参阅 [在 Amazon Outposts 上创建本地 Amazon EKS 集群以实现高可用性](eks-outposts-local-cluster-overview.md)。
+  **使用 EC2 实例存储配置的 Amazon Outposts。**Amazon EKS 已部署了更新后的本地集群架构。Kubernetes 控制面板将在 Outpost 上的 Amazon 托管式服务账户中的 6 个 Amazon EC2 实例上运行，其中 3 个实例专用于 `etcd`，另外 3 个实例用于其他控制面板组件。该实现与云端 Amazon EKS 更相近，遵循 Amazon EKS Kubernetes 版本生命周期，并支持多种其他功能，例如 Amazon EKS 附加组件和基于 BottleRocket 的 Worker 节点（除 AL2023 之外）。该实现已在所有提供 Amazon Outposts 的标准 Amazon 区域开放。有关更多信息，请参阅 [使用 EC2 实例存储配置的 Amazon Outposts 上的 Amazon EKS 本地集群概述](eks-outposts-instance-store-local-cluster-overview.md)。

下表总结了每种实现中的可用功能。

## 部署选项比较
<a name="outposts-overview-comparing-deployment-options"></a>

下表比较了扩展集群实现和双本地集群实现之间的区别。


| 功能 | 扩展集群 | 使用 EBS 在 Outposts 上配置的本地集群 | 使用 EC2 实例存储在 Outposts 上配置的本地集群 | 
| --- | --- | --- | --- | 
| Kubernetes 控制面板位置 |  Amazon 区域 | Outpost | Outpost | 
| Kubernetes 控制面板账户 |  Amazon 账户 | 您的 Amazon 账户 |  Amazon 托管式账户 | 
| Kubernetes 控制面板拓扑结构 | 云托管 | 3 个 Amazon EC2 实例，[堆叠 etcd](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/#stacked-etcd-topology)  | 6 个 Amazon EC2 实例（3 `etcd` \+ 3 个 API 服务器） | 
| 控制面板存储 | 云托管 | Amazon EBS | Amazon EC2 实例存储 | 
| 区域可用性 | 请参阅[服务端点](https://docs.amazonaws.cn/general/latest/gr/eks.html#eks_region)  | 美国东部（俄亥俄州）、美国东部（弗吉尼亚州北部）、美国西部（北加利福尼亚）、美国西部（俄勒冈州）、亚太地区（首尔）、亚太地区（新加坡）、亚太地区（悉尼）、亚太地区（东京）、加拿大（中部）、欧洲地区（法兰克福）、欧洲地区（爱尔兰）、欧洲地区（伦敦）、中东（巴林）和南美洲（圣保罗）。 | 所有提供 Amazon Outposts 的商业 Amazon 区域 | 
| Kubernetes 次要版本 |  [支持的 Amazon EKS 版本](https://docs.amazonaws.cn/eks/latest/userguide/kubernetes-versions.html)  | 请参阅 [了解适用于 Amazon Outposts 的 Kubernetes 和 Amazon EKS 平台版本](eks-outposts-platform-versions.md)。 |  [支持的 Amazon EKS 版本](https://docs.amazonaws.cn/eks/latest/userguide/kubernetes-versions.html)  | 
| 平台版本 | 请参阅 [Amazon EKS 平台版本](https://docs.amazonaws.cn/eks/latest/userguide/platform-versions.html)  | 请参阅 [了解适用于 Amazon Outposts 的 Kubernetes 和 Amazon EKS 平台版本](eks-outposts-platform-versions.md)。 | 请参阅 [Amazon EKS 平台版本](https://docs.amazonaws.cn/eks/latest/userguide/platform-versions.html)  | 
| Outpost 外形规格 | Outpost 机架 | Outpost 机架 | Outpost 机架 | 
| 用户界面 |  Amazon Web Services 管理控制台、Amazon CLI、Amazon EKS API、`eksctl`、Amazon CloudFormation 和 Terraform |  Amazon Web Services 管理控制台、Amazon CLI、Amazon EKS API、`eksctl`、Amazon CloudFormation 和 Terraform |  Amazon Web Services 管理控制台、Amazon CLI、Amazon EKS API、Amazon CloudFormation | 
| 托管策略 |  [AmazonEKSClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazoneksclusterpolicy) 和 [Amazon托管策略：AmazonEKSServiceRolePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazoneksservicerolepolicy)  |  [AmazonEKSLocalOutpostClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazonekslocaloutpostclusterpolicy) 和 [Amazon 托管策略：AmazonEKSLocalOutpostServiceRolePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazonekslocaloutpostservicerolepolicy)  |  [AmazonEKSClusterPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazoneksclusterpolicy) 和 [Amazon托管策略：AmazonEKSServiceRolePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-amazoneksservicerolepolicy)  | 
| 集群 VPC 和子网 | 请参阅 [查看 Amazon EKS 对 VPC 和子网的联网要求](network-reqs.md)  | 请参阅 [为 Amazon Outposts 上的 Amazon EKS 集群创建 VPC 和子网](eks-outposts-vpc-subnet-requirements.md)  | 请参阅 [为使用 EC2 实例存储配置的 Amazon Outposts 上的 Amazon EKS 本地集群创建 VPC 和子网](eks-outposts-instance-store-vpc-subnet-requirements.md)  | 
| 集群终端节点访问 | 公共或私有，或者两者兼而有之 | 仅限私有 | 私有或公有与私有 | 
| Kubernetes API 服务器身份验证 |  Amazon Identity and Access Management（IAM）、OIDC 和访问条目 | IAM 和 `x.509` 证书 | IAM、OIDC、访问条目、`aws-auth` ConfigMap 和 `x.509` 证书（用于断开网络连接时） | 
| 节点类型 | 仅自行管理 | 仅自行管理 | 仅自行管理 | 
| 节点计算类型 | Amazon EC2 按需 | Amazon EC2 按需 | Amazon EC2 按需 | 
| 节点存储类型 | Amazon EBS `gp2` 和本地 NVMe SSD | Amazon EBS `gp2` 和本地 NVMe SSD | 本地 NVMe SSD | 
| Amazon EKS 优化版 AMI | Amazon Linux、Windows 和 Bottlerocket | Amazon Linux | Amazon Linux 和 Bottlerocket | 
| IP 版本 |  仅限 `IPv4` |  仅限 `IPv4` |  仅限 `IPv4` | 
| 附加组件 | Amazon EKS 附加组件或自行管理的附加组件 | 自行管理的附加组件 | Amazon EKS 附加组件（[已验证列表](eks-outposts-instance-store-local-cluster-addons.md)）或自行管理的附加组件 | 
| 默认容器网络接口 | 适用于 Kubernetes 的 Amazon VPC CNI 插件 | 适用于 Kubernetes 的 Amazon VPC CNI 插件 | 适用于 Kubernetes 的 Amazon VPC CNI 插件 | 
| Kubernetes 控制面板日志 | Amazon CloudWatch Logs | Amazon CloudWatch Logs | Amazon CloudWatch Logs | 
|  `etcd` 备份 | 云托管 | 客户自行管理（`etcdctl` 或 Amazon EBS 卷备份） | 由 Amazon EKS 托管 | 
| 负载均衡 | 使用 [Amazon Load Balancer Controller](aws-load-balancer-controller.md) 仅预调配应用程序负载均衡器（无网络负载均衡器） | 使用 [Amazon Load Balancer Controller](aws-load-balancer-controller.md) 仅预调配应用程序负载均衡器（无网络负载均衡器） | 使用 [Amazon Load Balancer Controller](aws-load-balancer-controller.md) 仅预调配应用程序负载均衡器（无网络负载均衡器） | 
| 秘密信封加密 | 支持，请参阅[在现有集群上使用 KMS 加密 Kubernetes 密钥](enable-kms.md)  | 不支持 | 不支持 | 
| 服务账户的 IAM 角色（IRSA） | 支持，请参阅[服务账户的 IAM 角色](iam-roles-for-service-accounts.md)  | 不支持 | 支持（需要到 Amazon 区域的连接；网络连接断开期间不可用） | 
| EKS 容器组身份 | 支持，请参阅[了解 EKS 容器组身份如何向容器组（pod）授予对 Amazon 服务的访问权限](pod-identities.md)  | 不支持 | 支持（需要到 Amazon 区域的连接；网络连接断开期间不可用） | 
| 问题排查 | 请参阅 [排查 Amazon EKS 集群和节点问题](troubleshooting.md)  | 请参阅 [排查 Amazon Outposts 上的本地 Amazon EKS 集群问题](eks-outposts-troubleshooting.md)  | 请参阅 [使用 EC2 实例存储配置的 Amazon Outposts 上的 Amazon EKS 本地集群问题排查](eks-outposts-instance-store-troubleshooting.md)  | 

**重要**  
如果在 RAM 共享的 Outpost 上创建本地集群，则会使 Outpost 所有者拥有集群控制面板的物理访问权限
在 EC2 实例存储 Outposts 上，IRSA 和 EKS 容器组身份依赖 Amazon 区域中的 Amazon STS。在网络连接断开期间，使用 IRSA 或容器组身份的工作负载无法获得新的凭证。有关更多信息，请参阅 [在使用 EC2 实例存储配置的 Amazon Outposts 上准备 Amazon EKS 本地集群以在网络连接断开期间使用](eks-outposts-instance-store-network-disconnects.md)。

**Topics**