

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# VPC 和子网注意事项
<a name="subnets"></a>

**提示**  
 通过 Amazon EKS 研讨会@@ [探索](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el)最佳实践。

运营 EKS 集群需要了解 AWS VPC 联网以及 Kubernetes 联网知识。

我们建议您在开始设计 VPC 或在现有 VPC 中部署集群之前，先了解 EKS 控制平面通信机制。

在构建 [VPC 和子网以与 EKS 配合使用时，请参阅集群](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) VPC 注意事项和 [Amazon EKS 安全组注意事项](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html)。

## 概述
<a name="_overview"></a>

### EKS 集群架构
<a name="_eks_cluster_architecture"></a>

一个 EKS 集群由两个 VPC 组成：
+ 托管 Kubernetes 控制平面的 AWS-managed VPC。此 VPC 不会出现在客户账户中。
+ 托管 Kubernetes 节点的由客户管理的 VPC。这是容器以及其他客户管理的 AWS 基础设施（例如集群使用的负载均衡器）的运行场所。此 VPC 出现在客户账户中。在创建集群之前，您需要创建客户托管的 VPC。如果您未提供 VPC，则 eksctl 会创建一个 VPC。

客户 VPC 中的节点需要能够连接到 AWS VPC 中的托管 API 服务器终端节点。这允许节点在 Kubernetes 控制平面上注册并接收运行应用程序 Pod 的请求。

这些节点通过 (a) EKS 公共端点或 (b) 由 EKS 管理的 Cross-Account [弹性网络接口](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) (X-ENI) 连接到 EKS 控制平面。创建集群时，您需要指定至少两个 VPC 子网。EKS X-ENI 在创建集群期间指定的每个子网（也称为集群子网）中放置一个。Kubernetes API 服务器使用这些 Cross-Account ENI 与部署在客户管理的集群 VPC 子网上的节点进行通信。

![集群网络的一般示意图](http://docs.aws.amazon.com/zh_cn/eks/latest/best-practices/images/networking/subnet_image.png)


节点启动时，将执行 EKS 引导脚本并安装 Kubernetes 节点配置文件。作为每个实例启动过程的一部分，将启动容器运行时代理、kubelet 和 Kubernetes 节点代理。

要注册节点，Kubelet 会联系 Kubernetes 集群终端节点。它与 VPC 外部的公共终端节点或 VPC 内的私有终端节点建立连接。Kubelet 接收 API 指令，并定期向端点提供状态更新和心跳。

### EKS 控制平面通信
<a name="_eks_control_plane_communication"></a>

EKS 有两种方法可以控制对[集群终端节点](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html)的访问。终端节点访问控制允许您选择是可以从公共 Internet 访问终端节点，还是只能通过您的 VPC 访问终端节点。您可以同时打开公共终端节点（这是默认值）、私有终端节点，或者同时开启两者。

集群 API 终端节点的配置决定了节点与控制平面通信所采用的路径。请注意，这些终端节点设置可以随时通过 EKS 控制台或 API 进行更改。

#### 公共终端节点
<a name="_public_endpoint"></a>

这是新 Amazon EKS 集群的默认行为。当只启用集群的公共终端节点时，来自集群 VPC（例如控制平面通信的工作节点）内的 Kubernetes API 请求会离开 VPC，但不会离开 Amazon 的网络。为了使节点能够连接到控制平面，它们必须具有公有 IP 地址和通往 Internet 网关的路由，或者可以使用 NAT 网关的公有 IP 地址的 NAT 网关的路由。

#### 公有和私有端点
<a name="_public_and_private_endpoint"></a>

启用公有和私有终端节点后，来自 VPC 内部的 Kubernetes API 请求将通过 X-ENIs 您的 VPC 内部与控制平面进行通信。集群 API 服务器可从 Internet 访问。

#### 私有端点
<a name="_private_endpoint"></a>

如果仅启用私有端点，则无法通过互联网公开访问您的 API 服务器。传输到集群 API 服务器的所有流量都必须来自您的集群的 VPC 或连接的网络中。这些节点通过您的 VPC X-ENIs 内部与 API 服务器通信。请注意，集群管理工具必须有权访问私有终端节点。详细了解[如何从 Amazon VPC 外部连接到私有 Amazon EKS 集群终端节点。](https://aws.amazon.com/premiumsupport/knowledge-center/eks-private-cluster-endpoint-vpc/)

请注意，集群的 API 服务器终端节点由公共 DNS 服务器解析为来自 VPC 的私有 IP 地址。过去，终端节点只能在 VPC 内部解析。

### VPC 配置
<a name="_vpc_configurations"></a>

Amazon VPC 同时支持 IPv4 和 IPv6 寻址。亚马逊 EKS 默认支持 IPv4。VPC 必须具有一个与之关联的 IPv4 CIDR 块。您可以选择将多个 IPv4 [无类 Inter-Domain 路由](http://en.wikipedia.org/wiki/CIDR_notation) (CIDR) 块和多个 IPv6 CIDR 块关联到您的 VPC。[创建 VPC 时，必须按照 RFC 1918 中指定的私有 IPv4 地址范围为该 VPC 指定 IPv4 网段。](http://www.faqs.org/rfcs/rfc1918.html)允许的区块大小介于`/16`前缀（65,536 个 IP 地址）和`/28`前缀（16 个 IP 地址）之间。

在创建新 VPC 时，您可以连接一个 IPv6 CIDR 块，在更改现有 VPC 时可以连接最多五个 IPv6 CIDR 块。IPv6 CIDR 块大小的前缀长度可以介于 /44 和 /60 之间，对于 IPv6 子网，前缀长度可以介于 /44/ 和 /64 之间。您可以从亚马逊维护的 IPv6 地址池中请求 IPv6 CIDR 块。有关更多信息，请参阅《[VPC 用户指南》的 VPC CIDR 块](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cidr-blocks.html)部分。

亚马逊 EKS 集群同时支持 IPv4 和 IPv6。默认情况下，EKS 集群使用 IPv4 IP。在创建集群时指定 IPv6 将启用使用 IPv6 集群。IPv6 集群需要双堆栈 VPC 和子网。

Amazon EKS 建议您在创建集群时至少使用两个位于不同可用区域的子网。您在创建集群时传入的子网称为集群子网。创建集群时，Amazon EKS 会在您指定的子网中创建最多 4 个跨账户（x 账户或 X-enis）网卡。X-enis 始终处于部署状态，用于集群管理流量，例如日志传输、exec 和代理。请参阅 EKS 用户指南，了解完整的 [VPC 和子网要求](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html#network-requirements-subnets)详情。

Kubernetes 工作节点可以在集群子网中运行，但不建议这样做。在[集群升级](cluster-upgrades.md#upgrades-ips)期间，Amazon EKS 会在集群子网中配置其他 ENI。当您的集群向外扩展时，工作节点和 Pod 可能会消耗集群子网中的可用 IP。因此，为了确保有足够的可用IP，您可能需要考虑使用带有 /28 网络掩码的专用集群子网。

Kubernetes 工作节点可以在公有子网或私有子网中运行。子网是公有子网还是私有子网是指子网内的流量是通过[互联网网关](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)路由的。公有子网有通过互联网网关进入互联网的路由表入口，但私有子网没有。

源自其他地方并到达您的节点的流量称为*入口*。来自节点并离开网络的流量称为*出*口。在配置了互联网网关的子网中具有公有或弹性 IP 地址 (EIP) 的节点允许从 VPC 外部进入。*私有子网通常具有到 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)的路由，这不允许从 VPC 外部进入子网中节点的入口流量，同时仍允许*来自节点的流量离*开 VPC（出口）。*

在 IPv6 世界中，每个地址都可以通过互联网进行路由。与节点和 Pod 关联的 IPv6 地址是公开的。通过在 VPC 中实现[仅限出口的互联网网关 (EIGW) 来支持私有子网](https://docs.aws.amazon.com/vpc/latest/userguide/egress-only-internet-gateway.html)，允许出站流量，同时阻止所有传入流量。在 V [PC 用户指南](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html)中可以找到实施 IPv6 子网的最佳实践。

### 您可以通过三种不同的方式配置 VPC 和子网：
<a name="_you_can_configure_vpc_and_subnets_in_three_different_ways"></a>

#### 仅使用公有子网
<a name="_using_only_public_subnets"></a>

在同一个公共子网中，同时创建节点和入口资源（例如负载均衡器）。使用标记公有子网[http://kubernetes.io/role/elb](http://kubernetes.io/role/elb)以构造面向互联网的负载均衡器。在此配置中，可以将集群终端节点配置为公共终端节点、私有终端节点或两者兼而有之（公有和私有）。

#### 使用私有和公有子网
<a name="_using_private_and_public_subnets"></a>

节点是在私有子网上创建的，而 Ingress 资源是在公共子网中实例化的。您可以启用对集群终端节点的公共、私有或两者（公有和私有）访问权限。根据集群终端节点的配置，节点流量将通过 NAT 网关或 ENI 进入。

#### 仅使用私有子网
<a name="_using_only_private_subnets"></a>

节点和入口都是在私有子网中创建的。使用子[http://kubernetes.io/role/internal-elb:1](http://kubernetes.io/role/internal-elb:1)网标签来构造内部负载均衡器。访问集群的终端节点将需要 VPN 连接。您必须激活 [AWS f PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) or EC2 以及所有 Amazon ECR 和 S3 存储库。只应启用集群的私有终端节点。我们建议在配置[私有集群之前仔细阅读 EKS 私有集群要求](https://docs.aws.amazon.com/eks/latest/userguide/private-clusters.html)。

### 在 VPC 之间进行通信
<a name="cross-vpcs"></a>

在许多情况下，您需要将多个 VPC 和单独的 EKS 集群部署到这些 VPC。

您可以使用 [Amazon VPC Lattice](https://aws.amazon.com/vpc/lattice/) 在多个 VPC 和账户之间持续安全地连接服务（无需通过 VPC 对等互连、AWS PrivateLink 或 AWS Transit Gateway 等服务提供额外的连接）。点击[此处](https://aws.amazon.com/blogs/networking-and-content-delivery/build-secure-multi-account-multi-vpc-connectivity-for-your-applications-with-amazon-vpc-lattice/)了解更多信息。

![Amazon VPC Lattice](http://docs.aws.amazon.com/zh_cn/eks/latest/best-practices/images/networking/subnet_vpc-lattice.gif)


Amazon VPC Lattice 在 IPv4 和 IPv6 的本地链路地址空间中运行，为可能具有重叠的 IPv4 地址的服务提供连接。为了提高运营效率，我们强烈建议将 EKS 集群和节点部署到不重叠的 IP 范围。如果您的基础设施包含 IP 范围重叠的 VPC，则需要相应地架构您的网络。我们建议[私有 NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-basics)或[自定义联](custom-networking.md)网模式下的 VPC CNI 与[传输网关](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-transit-gateway.html)结合使用，在 EKS 上集成工作负载，以解决重叠的 CIDR 挑战，同时保留可路由的 RFC1918 IP 地址。

![带有自定义网络的私有 Nat 网关](http://docs.aws.amazon.com/zh_cn/eks/latest/best-practices/images/networking/subnet_private-nat-gw.gif)


如果您是服务提供商 PrivateLink，并且希望在不同的账户中与您的客户 VPC 共享您的 Kubernetes 服务和入口（ALB 或 NLB），请考虑使用 [AWS](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html)（也称为终端节点服务）。

### 跨多个账户共享 VPC
<a name="subnets-multiple-accounts"></a>

许多企业采用共享的 Amazon VPC 来简化网络管理、降低成本并提高 AWS 组织中多个 AWS 账户的安全性。他们利用 AWS Resource Access Manager (RAM) 与个人 [AWS 账户、组织单位 (OU) 或整个 AWS 组织安全地共享支持的 AWS 资源](https://docs.aws.amazon.com/ram/latest/userguide/shareable.html)。

您可以使用 AWS RAM 从另一个 AWS 账户在共享 VPC 子网中部署 Amazon EKS 集群、托管节点组和其他支持 AWS 资源（如 LoadBalancers安全组、端点等）。下图描绘了一个高级架构示例。这允许中央网络团队控制 VPC、子网等网络结构，同时允许应用程序或平台团队在各自的 AWS 账户中部署 Amazon EKS 集群。此场景的完整演练可在此 [github 存储库](https://github.com/aws-samples/eks-shared-subnets)中找到。

![在各个 AWS 账户的 VPC 共享子网中部署 Amazon EKS。](http://docs.aws.amazon.com/zh_cn/eks/latest/best-practices/images/networking/subnet_eks-shared-subnets.png)


#### 使用共享子网时的注意事项
<a name="_considerations_when_using_shared_subnets"></a>
+ Amazon EKS 集群和工作节点可以在属于同一 VPC 的共享子网中创建。Amazon EKS 不支持跨多个 VPC 创建集群。
+ Amazon EKS 使用 AWS VPC 安全组 (SG) 来控制 Kubernetes 控制平面和集群工作节点之间的流量。安全组还用于控制工作节点与其他 VPC 资源以及外部 IP 地址之间的流量。您必须在 application/participant 账户中创建这些安全组。确保您打算用于 pod 的安全组也位于参与者账户中。您可以在安全组中配置入站和出站规则，以允许进出位于 Central VPC 账户中的安全组的必要流量。
+ 在您的 Amazon EKS 集群所在的参与者账户中创建 IAM 角色和相关策略。这些 IAM 角色和策略对于向由 Amazon EKS 管理的 Kubernetes 集群以及在 Fargate 上运行的节点和容器授予必要权限至关重要。这些权限允许 Amazon EKS 代表您调用其他 AWS 服务。
+ 您可以按照以下方法允许跨账户从 k8s 容器访问 AWS 资源，例如 Amazon S3 存储桶、Dynamodb 表等：
  +  **基于资源的策略方法**：如果 AWS 服务支持资源策略，则可以添加适当的基于资源的策略，以允许跨账户访问分配给 kubernetes pod 的 IAM 角色。在这种情况下，OIDC 提供商、IAM 角色和权限策略存在于应用程序账户中。要查找支持基于资源的策略的 AWS 服务，请参阅[与 IAM 配合使用的 A](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) WS 服务，然后在 “基于资源” 列中查找标有 “是” 的服务。
  +  **OIDC 提供商方法**：OIDC 提供商、IAM 角色、权限和信任策略等 IAM 资源将在资源所在的其他参与者 AWS 账户中创建。这些角色将分配给应用程序账户中的 Kubernetes pod，以便它们可以访问跨账户资源。有关此方法[的完整演练，请参阅 Kubernetes 服务账户的跨账户 IAM 角色](https://aws.amazon.com/blogs/containers/cross-account-iam-roles-for-kubernetes-service-accounts/)博客。
+ 您可以部署 Amazon 弹性负载均衡器 (ELB) 资源（ALB 或 NLB），将流量路由到应用程序账户或中央网络账户中的 k8s 容器。有关在中央网络账户中部署 ELB 资源的详细说明，请参阅通过 [ Cross-Account Load Balancer 公开 Amazon EK](https://aws.amazon.com/blogs/containers/expose-amazon-eks-pods-through-cross-account-load-balancer/) S Pod 演练。此选项提供了更高的灵活性，因为它允许中央网络账户完全控制 Load Balancer 资源的安全配置。
+ 使用 `custom networking feature` Amazon VPC CNI 时，您需要使用中央网络账户中列出的可用区 (AZ) ID 映射来创建每个映射。`ENIConfig`这是因为物理可用区随机映射到每个 AWS 账户中的可用区名称。

### 安全组
<a name="_security_groups"></a>

[https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)控制允许到达和离开与其关联资源的流量。Amazon EKS 使用安全组来管理[控制平面和节点](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html)之间的通信。在创建集群时，Amazon EKS 将创建一个名为 `eks-cluster-sg-my-cluster-uniqueID` 的安全组。EKS 将这些安全组关联到托管 ENI 和节点。默认规则允许所有流量在集群和节点之间自由流动，并允许所有出站流量到任何目的地。

创建集群时，您可以指定自己的安全组。当您指定自己的[安全组时，请参阅有关安全组的建议](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html)。

## 建议
<a name="_recommendations"></a>

### 考虑 Multi-AZ 部署
<a name="_consider_multi_az_deployment"></a>

AWS 区域提供多个物理分隔和隔离的可用区 (AZ)，这些可用区通过低延迟、高吞吐量和高度冗余的网络相连。借助可用区，您可以设计和操作在可用区之间自动进行故障转移而不会中断的应用程序。Amazon EKS 强烈建议将 EKS 集群部署到多个可用区。创建集群时，请考虑在至少两个可用区中指定子网。

在节点上运行的 Kubelet 会自动为节点对象添加标签，例如。[http://topology.kubernetes.io/region=us-west-2,topology.kubernetes.io/zone=us-west-2d](http://topology.kubernetes.io/region=us-west-2,topology.kubernetes.io/zone=us-west-2d)我们建议将节点标签与 [Pod 拓扑分布约束](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/)结合使用，以控制 Pod 的跨区域分布方式。这些提示使 Kubernetes [调度器](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/)能够放置 Pod 以获得更好的预期可用性，从而降低相关故障影响整个工作负载的风险。请参阅[为 Pod 分配节点](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)，查看节点选择器和可用区分布限制的示例。

您可以在创建节点时定义子网或可用区。如果未配置子网，则节点将放置在集群子网中。EKS 对托管节点组的支持会根据可用容量自动将节点分布在多个可用区域中。如果工作负载定义了拓扑分布限制，[Karpenter](https://karpenter.sh/) 将通过将节点扩展到指定可用区来实现可用区分布布局。

AWS 弹性负载均衡器由 Kubernetes 集群的 AWS Load Balancer 控制器管理。它为 Kubernetes 入口资源配置应用程序负载均衡器 (ALB)，为负载均衡器类型的 Kubernetes 服务预置网络负载均衡器 (NLB)。Elastic Load Balancer 控制器使用[标签](https://aws.amazon.com/premiumsupport/knowledge-center/eks-vpc-subnet-discovery/)来发现子网。ELB 控制器至少需要两个可用区 (AZ) 才能成功配置入口资源。考虑在至少两个可用区中设置子网，以利用地理冗余的安全性和可靠性。

### 将节点部署到私有子网
<a name="_deploy_nodes_to_private_subnets"></a>

包含私有子网和公有子网的 VPC 是在 EKS 上部署 Kubernetes 工作负载的理想方法。考虑在两个不同的可用区中至少设置两个公有子网和两个私有子网。公有子网的相关路由表包含通往 Internet 网关的路由。Pod 能够通过 NAT 网关与互联网交互。在 IPv6 环境 (EI [GW) 中，仅限出口的互联网网关支持私有子网](https://docs.aws.amazon.com/vpc/latest/userguide/egress-only-internet-gateway.html)。

在私有子网中实例化节点可以最大限度地控制流向节点的流量，并且对绝大多数 Kubernetes 应用程序有效。入口资源（如负载均衡器）在公共子网中实例化，并将流量路由到在私有子网上运行的 Pod。

如果您要求严格的安全性和网络隔离，请考虑使用仅限私有模式。在此配置中，三个私有子网部署在 AWS 区域的 VPC 内的不同可用区中。部署到子网的资源无法访问互联网，互联网也无法访问子网中的资源。为了使您的 Kubernetes 应用程序能够访问其他 AWS 服务，您必须配置 PrivateLink 接口网 and/or 关终端节点。您可以设置内部负载均衡器，使用 AWS Load Balancer Controller 将流量重定向到 Pod。必须对私有子网进行标记 ([http://kubernetes.io/role/internal-elb](http://kubernetes.io/role/internal-elb))，控制器才能配置负载均衡器。要在集群中注册节点，必须将集群终端节点设置为私有模式。请访问[私有集群指南](https://docs.aws.amazon.com/eks/latest/userguide/private-clusters.html)，了解完整的要求和注意事项。

### 考虑集群终端节点的公用和私有模式
<a name="_consider_public_and_private_mode_for_cluster_endpoint"></a>

Amazon EKS 提供仅限公开、公有和私有以及仅限私有的集群终端节点模式。默认模式为仅限公开，但我们建议将集群终端节点配置为公共模式和私有模式。此选项允许集群 VPC 内的 Kubernetes API 调用（例如节点到控制平面通信）使用私有 VPC 终端节点，流量将流量保留在集群的 VPC 中。另一方面，可以从互联网访问您的集群 API 服务器。但是，我们强烈建议限制可以使用公共终端节点的 CIDR 块。[了解如何配置公有和私有终端节点访问权限，包括限制 CIDR 块。](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html#modify-endpoint-access)

当您需要安全性和网络隔离时，我们建议您使用仅限私有的端点。我们建议使用 E [KS 用户指南](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html#private-access)中列出的任一选项私下连接到 API 服务器。

### 谨慎配置安全组
<a name="_configure_security_groups_carefully"></a>

Amazon EKS 支持使用自定义安全组。任何自定义安全组都必须允许节点与 Kubernetes 控制平面之间的通信。当您的组织不允许开放通信时，请检查[端口要求](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html)并手动配置规则。

EKS 会将您在集群创建期间提供的自定义安全组应用于托管接口（X-ENIs）。但是，它不会立即将它们与节点相关联。在创建节点组时，强烈建议手动[关联自定义安全组](https://eksctl.io/usage/schema/#nodeGroups-securityGroups)。请考虑启用[安全性 GroupSelectorTerms](https://karpenter.sh/docs/concepts/nodeclasses/#specsecuritygroupselectorterms)，以便在节点自动缩放期间启用自定义安全组的 Karpenter 节点模板发现。

我们强烈建议创建一个安全组以允许所有节点间通信流量。在引导过程中，节点需要出站 Internet 连接才能访问集群终端节点。评估外部访问要求，例如本地连接和容器注册表访问权限，并适当设置规则。在将更改投入生产之前，我们强烈建议您在开发环境中仔细检查连接。

### 在每个可用区部署 NAT 网关
<a name="_deploy_nat_gateways_in_each_availability_zone"></a>

如果您在私有子网（IPv4 和 IPv6）中部署节点，请考虑在每个可用区 (AZ) 中创建一个 NAT 网关，以确保架构独立于区域并减少跨可用区的开支。可用区中的每个 NAT 网关都采用冗余实现。