

 **帮助改进此页面** 

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

# 为使用 EC2 实例存储配置的 AWS Outposts 上的 Amazon EKS 本地集群选择实例类型和置放
<a name="eks-outposts-instance-store-capacity-considerations"></a>

本主题提供的指南，包括如何为使用 EC2 实例存储配置的 AWS Outpost 上的 Amazon EKS 本地集群选择 Kubernetes 控制面板实例类型，以及如何配置置放以满足高可用性要求。

**注意**  
如果您的 Outpost 是使用 Amazon EBS 而不是 EC2 实例存储配置的，则本主题中描述的架构不适用于您的 Outpost。使用 EBS 配置的 Outposts 将继续使用现有的本地集群实现。有关更多信息，请参阅 [根据容量因素为 AWS Outposts 上的 Amazon EKS 集群选择实例类型和置放群组](eks-outposts-capacity-considerations.md)。  
如果您有兴趣使用更新后的本地集群架构在 EBS 支持的 Outpost 上创建本地集群，请联系您的 AWS 客户团队。

## 控制面板架构
<a name="eks-outposts-instance-store-capacity-considerations-architecture"></a>

本地集群 Kubernetes 控制面板会在您的 Outpost 上的 **6 个 EC2 实例**上运行：
+  **3 个控制面板实例**：用于托管 Kubernetes 控制面板组件，包括 Kubernetes API 服务器、调度器和控制器管理器。
+  **3 个 `etcd` 实例**：用于将 Kubernetes 集群状态存储在[外部 etcd 拓扑](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/#external-etcd-topology)中。

这些实例将在您的 Outpost 上的 AWS 托管式服务账户中运行，不会作为 EC2 实例在您的 AWS 账户或 Amazon EC2 控制台中显示。控制面板消耗的容量在 AWS Outposts 控制台中可见。

控制面板在有负载时不会水平扩缩。如果需要不同的控制面板实例大小，则必须创建新集群。

## 实例类型选择
<a name="eks-outposts-instance-store-capacity-considerations-instance-type"></a>

在 AWS Outposts 上的 Amazon EKS 本地集群架构更新后，Kubernetes 控制面板使用专用的 `etcd` 拓扑：API 服务器和 `etcd` 分别在单独的实例上运行。创建集群时，您需要指定两种实例类型：用于 API 服务器的 `controlPlaneInstanceType`，以及用于 `etcd` 的 `etcdInstanceType`。

您选择的实例类型必须在 Outpost 上可用。可用的实例系列取决于您的 Outpost 版本和 SKU，不同实例系列的相同实例大小可能具有不同的 vCPU 和内存配置。

 **API 服务器`controlPlaneInstanceType` (**) 


| 预期 Worker 节点 | vCPU | 内存 | 
| --- | --- | --- | 
| 1–20 | 2 | 8 GiB | 
| 21–100 | 4 | 16 GiB | 
| 101–250 | 8 | 32 GiB | 
| 251–500 | 16 | 64 GiB | 

 ** `etcd` (`etcdInstanceType`)** 


| 预期 Worker 节点 | vCPU | 内存 | 
| --- | --- | --- | 
| 1–50 | 2 | 8 GiB | 
| 51–250 | 4 | 16 GiB | 
| 251–500 | 8 | 32 GiB | 

**重要**  
请确保本地集群生命周期内，您的 Outpost 具有 3 个 `controlPlaneInstanceType` 实例和 3 个 `etcdInstanceType` 实例所需的容量。

这些表格应仅作为指导参考，而非严格要求。建议选择能满足预期增长的实例系列和大小，因为集群创建后将无法更改 `controlPlaneInstanceType` 和 `etcdInstanceType`。要更改其中任何一项，则必须创建新的集群。

## 控制面板和 `etcd` 置放
<a name="eks-outposts-instance-store-capacity-considerations-placement"></a>

为确保高可用性，我们建议将控制面板和 `etcd` 实例跨多个硬件故障域分布。您可以在 `outpostConfig` 中使用 `controlPlanePlacement` 和 `etcdPlacement` 上的 `spreadLevel` 属性来控制此分布。设置 `spreadLevel` 后，Amazon EKS 会使用该分布策略创建一个 EC2 置放群组。您无需预先创建置放群组。

**注意**  
`controlPlanePlacement` 中的 `groupName` 参数不适用于运行基于实例存储的 EC2 实例的 Outposts。如果您之前将置放群组用于某个本地集群，现在应改用 `spreadLevel`。

### 分布级别
<a name="eks-outposts-instance-store-capacity-considerations-spread-levels"></a>

`spreadLevel` 属性接受两个值：
+  **`host`**：将控制面板实例分布到不同的物理主机。需要至少 3 台使用所选实例类型配置的主机。
+  **`rack`**：将控制面板实例分布到不同的物理 Outpost 机架上。需要至少 3 个位于使用所选实例类型配置的主机上的机架。

## 容量规划
<a name="eks-outposts-instance-store-capacity-considerations-capacity-planning"></a>

在为本地集群计划 Outpost 容量时，应注意以下因素：
+  **控制面板和 `etcd` 实例：**每个集群需要 6 个实例（其中 3 个用于 `controlPlaneInstanceType`，3 个用于 `etcdInstanceType`）。
+  **Worker 节点：**您自行管理的节点组的 EC2 实例。
+  **虚拟化主机：**控制面板必须在虚拟化主机上运行。您的 Outpost 必须拥有具备足够容量的虚拟化主机。

## 置放问题排查
<a name="eks-outposts-instance-store-capacity-considerations-troubleshooting"></a>

如果在指定分布级别后，您的集群长时间处于 `CREATING` 或 `UPDATING` 状态，请验证您的 Outpost 中配置了所选实例类型的主机或机架数量是否足够，以满足分布拓扑的需要。

有关排查本地集群问题的更多信息，请参阅[使用 EC2 实例存储配置的 AWS Outposts 上的 Amazon EKS 本地集群问题排查](eks-outposts-instance-store-troubleshooting.md)。