

 **帮助改进此页面** 

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

# 为 AWS Outposts 上的 Amazon EKS 集群创建 VPC 和子网
<a name="eks-outposts-vpc-subnet-requirements"></a>

在您创建本地集群时，您将指定 VPC 以及在 Outpost 上运行的至少一个私有子网。本主题概述适用于本地集群的 VPC 和子网的要求和注意事项。

## VPC 要求和注意事项
<a name="outposts-vpc-requirements"></a>

在您创建本地集群时，您指定的 VPC 必须满足以下要求和注意事项：
+ 请确保 VPC 具有足够的 IP 地址用于本地集群、任何节点以及您要创建的其他 Kubernetes 资源。如果要使用的 VPC 没有足够的 IP 地址，请增加可用的 IP 地址数量。您可以通过[关联其他无类别域间路由（CIDR）块](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#add-ipv4-cidr)与 VPC 来执行此操作。您可以在创建集群之前或之后将私有 (RFC 1918) 和公有（非 RFC 1918）CIDR 块关联到您的 VPC。集群最多可能需要 5 个小时的时间来识别与 VPC 关联的 CIDR 块。
+ VPC 无法分配 IP 前缀或 IPv6 CIDR 块。由于这些限制，[为带前缀的 Amazon EKS 节点分配更多 IP 地址](cni-increase-ip-addresses.md)和[了解如何将 IPv6 地址分配给集群、容器组（pod）和服务](cni-ipv6.md)中包含的信息不适用于您的 VPC。
+ VPC 已启用 DNS 主机名和 DNS 解析。如果没有这些功能，本地集群将无法创建，因此您需要启用这些功能，然后重新创建集群。有关更多信息，请参阅《Amazon VPC 用户指南》中的 [VPC 的 DNS 属性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)。
+ 要通过本地网络访问本地集群，VPC 必须与 Outpost 的本地网关路由表关联。有关更多信息，请参阅《AWS Outposts 用户指南》中的 [VPC 关联](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-local-gateways.html#vpc-associations)。

## 子网要求和注意事项
<a name="outposts-subnet-requirements"></a>

创建集群时，请指定至少一个私有子网。如果您指定多个子网，Kubernetes 控制面板实例将均匀分布在这些子网中。如果指定多个子网，则这些子网必须存在于同一 Outpost 上。此外，子网还必须具有适当的路由和安全组权限，以便相互通信。创建本地集群时，您指定的子网必须满足以下要求：
+ 子网均位于同一逻辑 Outpost 上。
+ 这些子网总共具有至少三个可用 IP 地址用于 Kubernetes 控制面板实例。如果指定三个子网，则每个子网必须具有至少一个可用 IP 地址。如果指定两个子网，则每个子网必须具有至少两个可用 IP 地址。如果指定一个子网，则该子网必须具有至少三个可用 IP 地址。
+ 子网具有通向 Outpost 机架的[本地网关](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-local-gateways.html)的路由，用于通过您的本地网络访问 Kubernetes API 服务器。如果子网没有通向 Outpost 机架的本地网关的路由，则您必须从 VPC 中与 Kubernetes API 服务器通信。
+ 子网必须使用基于 IP 地址的命名。Amazon EKS 不支持 Amazon EC2 [基于资源的命名](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html#instance-naming-rbn)。

## 子网对 AWS 服务的访问权限
<a name="subnet-access-to-services"></a>

Outposts 上本地集群的私有子网必须能够与区域性 AWS 服务通信。您可以通过使用 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)进行出站互联网访问来实现此目的，或者，如果您想在 VPC 内保持所有流量的私密性，则使用[接口 VPC 端点](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。

### 使用 NAT 网关
<a name="subnet-access-nat-gateway"></a>

Outposts 上本地集群的私有子网必须具有关联的路由表，其中包含通向 NAT 网关（在 Outposts 的父可用区内的公有子网中）的路由。该公有子网必须具有一条通向[互联网网关](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)的路由。NAT 网关可以实现出站互联网访问，并防止从互联网到 Outpost 上实例进行未经请求的入站连接。

### 使用接口 VPC 端点
<a name="vpc-subnet-requirements-vpc-endpoints"></a>

如果 Outposts 上本地集群的私有子网没有出站互联网连接，或者如果您想在 VPC 内保持所有流量的私密性，则在创建集群之前，您必须在区域性子网中创建以下接口 VPC 端点和[网关端点](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)。


| 终端节点 | 端点类型 | 
| --- | --- | 
|   `com.amazonaws.region-code.ssm`   |  接口  | 
|   `com.amazonaws.region-code.ssmmessages`   |  接口  | 
|   `com.amazonaws.region-code.ec2messages`   |  接口  | 
|   `com.amazonaws.region-code.ec2`   |  接口  | 
|   `com.amazonaws.region-code.secretsmanager`   |  接口  | 
|   `com.amazonaws.region-code.logs`   |  接口  | 
|   `com.amazonaws.region-code.sts`   |  接口  | 
|   `com.amazonaws.region-code.ecr.api`   |  接口  | 
|   `com.amazonaws.region-code.ecr.dkr`   |  接口  | 
|   `com.amazonaws.region-code.s3`   |  Gateway  | 

端点必须满足以下要求：
+ 在位于 Outposts 父可用区的私有子网中创建
+ 启用私有 DNS 名称
+ 具有附加的安全组，该组允许来自私有 outpost 子网的 CIDR 范围的入站 HTTPS 流量。

创建端点会产生费用。有关更多信息，请参阅 [AWS PrivateLink 定价](https://aws.amazon.com/privatelink/pricing/)。如果容器组（pod）需要访问其他 AWS 服务，您需要创建额外的端点。有关端点的完整列表，请参阅[与 AWS PrivateLink 集成的 AWS 服务](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html)。

## 创建 VPC
<a name="outposts-create-vpc"></a>

您可以使用以下 AWS CloudFormation 模板之一，创建满足上述要求的 VPC：
+  **[模板 1](https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-09-20/amazon-eks-local-outposts-vpc-subnet.yaml) ** – 此模板会创建一个 VPC，该 VPC 具有一个位于 Outpost 的私有子网，以及一个位于 AWS 区域的公有子网。该私有子网具有通过位于 AWS 区域中公有子网中的 NAT 网关通向互联网的路由。此模板可用于在具有传出互联网访问权限的子网中创建本地集群。
+  **[模板 2](https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2023-03-20/amazon-eks-local-outposts-fully-private-vpc-subnet.yaml) ** – 此模板会创建一个 VPC，该 VPC 具有一个位于 Outpost 的私有子网，以及在没有传入或传出互联网访问权限的子网（也称为私有子网）中创建本地集群所需的最小 VPC 端点集。