集群 VPC 注意事项 - Amazon EKS

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

集群 VPC 注意事项

创建 Amazon EKS 集群时,需要为集群指定要使用的 VPC 子网。Amazon EKS 要求指定至少两个可用区内的子网。我们建议使用同时带有公有子网和私有子网的 VPC,以便 Kubernetes 可以在公有子网中创建公有负载均衡器,进而将流量负载平衡到在私有子网中的节点上运行的 pod。

创建群集时,您还要指定托管群集资源的所有子网络,例如节点和负载平衡器。

注意

在集群中,面向 Internet 的负载均衡器需要公有子网。默认情况下,节点还需要通过出站互联网访问 Amazon EKS 用于在启动时间进行群集反查和节点注册的API。对于没有出站 Internet 访问的集群,请参阅私有集群

要提取容器映像,它们需要访问 Amazon S3 和 Amazon ECR API(以及任何其他容器注册表,如 DockerHub)。更多信息,请参阅 Amazon EKS 安全组注意事项AWIP地址范围AWS General Reference.

创建群集影响时所传递的子网络,其中 Amazon EKS 放置用于控制平面到节点通信的网口。

您可以在创建集群时仅指定公有或私有子网,但存在与这些配置关联的一些限制:

  • 仅限私人使用: 所有操作都在专用的子网络中运行,Kubernetes无法为您的Pod创建面向互联网的负载平衡器。

  • 公开: 所有内容都在公共的子网络(包括您的节点)中运行。

Amazon EKS 在您的专用子网络内创建一个网络界面,以便与节点通信。此通信渠道支持Kubernetes功能,例如 kubectl execkubectl logs 。创建群集时指定的安全组将应用于为您的群集控制平面创建的网络界面。

VPC 必须具有 DNS 主机名和 DNS 解析支持。否则,您的节点无法注册到群集。有关更多信息,请参阅 Amazon VPC 用户指南中的在您的 VPC 中使用 DNS

VPC IP 寻址

节点必须能够与控制平面和其他AW服务通信。如果您的节点部署在专用的子网络,则您必须具备以下条件之一:

  • 为到 北卡罗来纳州(NA. 必须为NAT网关分配一个公共IP地址,以便为节点提供互联网接入。

  • 配置了该子网络的若干必要设置,并采取了 私有集群.

如果将自我管理的节点部署在公共的子网络,则必须将该子网络配置为自动分配公共IP地址。否则,当节点实例处于 推出. 如果托管节点已部署至公共网络,则必须将网络网络网络配置为自动分配公共IP地址。这是因为如果不是,则不会为节点分配公共IP地址。使用以下命令确定您的公有子网是否配置为自动分配公有 IP 地址。

aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=VPC-ID" | grep 'SubnetId\|MapPublicIpOnLaunch'

输出如下所示。

"MapPublicIpOnLaunch": false, "SubnetId": "subnet-aaaaaaaaaaaaaaaaa", "MapPublicIpOnLaunch": false, "SubnetId": "subnet-bbbbbbbbbbbbbbbbb",

对于已将 MapPublicIpOnLaunch 设置为 false 的任何子网 ,请将设置更改为 true

aws ec2 modify-subnet-attribute --map-public-ip-on-launch --subnet-id subnet-aaaaaaaaaaaaaaaaa
重要

如果您使用 Amazon EKS AWS CloudFormation 模板 先部署您的VPC,然后再 03/26/2020,然后您需要更改您的公共子网络的设置。

您可以在用于您的 Amazon EKS 集群的 VPC 内定义私有 (RFC 1918) 和公有(非 RFC 1918)CIDR 范围。更多信息,请参阅 将IPv4CIDR块添加到VPCAmazon VPC 用户指南. 在为您的VPC和子网络选择无类别域间路由(CIDR)块时,请确保这些块包含足够的IP地址,以便 Amazon EC2 您计划部署的节点和Pod。您的Pod应至少有一个IP地址。您可以通过共享服务VPC实施传输网关,从而节省IP地址的使用。更多信息,请参阅 具有共享服务的孤立VPCEKSVPC可路由IP地址在混合网络中保持模式。

的 Amazon EKS 控制平面最多可创建4个 申请人管理的网口 VPC中。确保指定的子网络具有足够的IP地址,以用于请购人管理的网络界面和您的Pod。

VPC 标记要求

当您创建一个 Amazon EKS 早于版本1.15的群集, Amazon EKS 以下列方式标记包含您指定子网络的VPC,以便Kubernetes可以发现它:

Key Value

kubernetes.io/cluster/<cluster-name>

shared

  • Key 该 。<cluster-name> 值与您的 Amazon EKS 群集名称。

  • shared 值允许多个群集使用此VPC。

1.15 集群不需要此标签,也不由 Amazon EKS 创建。如果您将 1.15 集群部署到已有此标签的 VPC,不会删除此标签。

子网添加标签要求

创建 Amazon EKS 集群时,Amazon EKS 按以下方式为您指定的子网添加标签,以便 Kubernetes 可以发现它们:

注意

您的集群用于资源的所有子网(公有和私有)均应具有此标签。

Key Value

kubernetes.io/cluster/<cluster-name>

shared

  • Key 该 。<cluster-name> 值与您的 Amazon EKS 群集。

  • shared 的值允许多个群集使用此子网络。

内部负载均衡器的私有子网标记要求

必须按照以下方式为私有子网添加标签,以便 Kubernetes 知道它可以将这些子网用于内部负载均衡器。如果您在03/26/2020之后使用 Amazon EKS AWS CloudFormation 模板创建 VPC,则由该模板创建的子网会在创建时被添加标签。有关 Amazon EKS AWS CloudFormation VPC 模板的更多信息,请参阅为 Amazon EKS 集群创建 VPC

kubernetes.io/role/internal-elb

1

外部负载均衡器的公有子网标记选项

您必须为 VPC 中的公有子网添加标签,以便 Kubernetes 知道仅将这些子网用于外部负载均衡器,而不是在每个可用区中选择公有子网(按子网 ID 的字母表顺序选择)。如果您在03/26/2020之后使用 Amazon EKS AWS CloudFormation 模板创建 VPC,则由该模板创建的子网会在创建时被添加标签。有关 Amazon EKS AWS CloudFormation VPC 模板的更多信息,请参阅为 Amazon EKS 集群创建 VPC

kubernetes.io/role/elb

1