集群 VPC 和子网注意事项
Amazon EKS 建议使用同时带有公有子网和私有子网的 VPC,以便 Kubernetes 可以在公有子网中创建公有负载均衡器,进而将流量负载平衡到在私有子网中的节点上运行的 Pod。但此配置并不是必需配置。您可以在仅具有私有子网或仅公有子网的 VPC 中运行集群,具体取决于您的联网和安全要求。有关部署到仅具有私有子网的 VPC 的集群的更多信息,请参阅 私有集群。
创建 Amazon EKS 集群时,您可以指定 Amazon EKS 可以放置弹性网络接口的 VPC 子网。Amazon EKS 要求至少两个可用区中的子网,并跨这些子网创建多达四个网络接口,以便于控制层面与节点通信。此通信渠道支持 kubectl exec
和 kubectl logs
等 Kubernetes 功能。Amazon EKS 创建集群安全组,并且您在创建集群时指定的任何附加安全组将应用到这些网络接口。每个 Amazon EKS 创建的网络接口的描述中都有 Amazon EKS
。cluster
name
请确保您在集群创建期间指定的子网对于 Amazon EKS 创建的网络接口具有足够可用的 IP 地址。如果您要部署使用 IPv4 系列的集群,我们建议为 Amazon EKS 创建的网络接口创建小型 (/28
) 专用子网,并且仅将这些子网指定为集群创建的一部分。其他资源(如节点和负载均衡器)应在不同于集群创建期间指定的子网的子网中启动。
-
节点和负载均衡器可以在集群 VPC 的任意子网中启动,包括在集群创建期间未向 Amazon EKS 注册的子网。子网不需要节点的任何标签。要使 Kubernetes 负载均衡自动发现功能工作,必须按照 为子网添加标签 中的说明对子网进行标记。
-
创建集群后,便无法更改与集群关联的子网。如果您需要准确控制将 Amazon EKS 创建的网络接口放置在哪些子网中,您可以在集群创建期间仅指定两个子网,每个子网位于不同的可用区域中。
-
创建集群时,请勿选择 Amazon Outposts、Amazon Wavelength 或Amazon本地区域中的子网。
-
使用 v1.14 或更早版本创建的集群在 VPC 中包含
kubernetes.io/cluster/
标签。此标签仅由 Amazon EKS 使用,可以安全地删除。cluster-name
-
向现有集群添加 CIDR 块而导致的更新范围可能需要五个小时才能显示。
-
如果想要 Kubernetes 将 IPv6 地址分配给容器和服务,则必须将 IPv4 和 IPv6 CIDR 块分配给您的 VPC 和子网。有关更多信息,请参阅 Amazon VPC 用户指南中的关联 IPv6 CIDR 块与 VPC。您的路由表和安全组还必须包含 IPv6 地址。有关更多信息,请参阅 Amazon VPC 用户指南中的迁移到 IPv6。
-
节点必须能够与控制层面和其他Amazon服务通信。如果节点部署在私有子网中,并且您想要容器拥有 Internet 的出站访问权限,则私有子网必须满足以下要求之一:
您的 VPC 必须具有 DNS 主机名和 DNS 解析支持,否则您的节点无法向集群注册。有关更多信息,请参阅 Amazon VPC 用户指南中的在您的 VPC 中使用 DNS。
VPC IP 寻址
如果想要部署到公有子网中节点的容器拥有出站 Internet 访问权限,则您的公有子网必须配置为自动分配公有 IPv4 地址或 IPv6 地址。使用以下命令确定您的公有子网配置为自动分配公有 IPv4 地址还是 IPv6 地址。将
替换为您自己的值。example values
输出
对于已将 MapPublicIpOnLaunch
或 AssignIpv6AddressOnCreation
设置为 false
的任何子网,请将设置更改为 true
。
如果您在 2020 年 3 月 26 日之前使用 Amazon EKS Amazon CloudFormation 模板部署您的 VPC,则需要更改公有子网的设置。
您可以在用于 Amazon EKS 集群的 VPC 内定义私有 (RFC 1918) 和公有(非 RFC 1918)无类域间路由 (CIDR) IPv4 范围。有关更多信息,请参阅 Amazon VPC 用户指南中的向 VPC 中添加 IPv4 CIDR 块。为 VPC 和子网选择 CIDR 块时,请确保这些块包含足够的 IPv4 地址以用于您计划部署的所有 Amazon EC2 节点和容器。您的每个 Pod 应至少有一个 IP 地址。您可以通过使用共享服务 VPC 实施转换网关来节省 IP 地址的使用。有关更多信息,请参阅具有共享服务的隔离 VPC 和混合网络中的 Amazon EKS VPC 可路由 IP 地址保护模式
为子网添加标签
对于 1.18 及更早版本的集群,Amazon EKS 会向集群创建过程中传入的所有子网添加以下标签。Amazon EKS 不会向创建 1.19 集群时传入的子网添加标签。如果在 1.19 之前版本上创建的集群所用的子网上存在有标签,而且您已将集群更新到了 1.19,则不会从子网中删除该标签。
-
密钥 –
kubernetes.io/cluster/
cluster-name
-
值 –
shared
除了使用自动预置的 Elastic Load Balancer 所需的子网标签之外,您还可以选择使用此标记来控制 Elastic Load Balancer 的预置位置。有关负载均衡器子网标记的更多信息,请参阅 Amazon EKS 上的应用程序负载均衡 和 Amazon EKS 上的网络负载均衡。
增加可用的 VPC IPv4 地址
如果您的 Amazon VPC 的 IPv4 地址不足,则可以将辅助 CIDR 与现有 VPC 关联。有关更多信息,请参阅《Amazon VPC 用户指南》中的向 VPC 中添加 IPv4 CIDR 块。有了新的关联 CIDR,您就可以使用新关联的 CIDR 的子集创建子网。创建新子网后,您可以创建其他使用新关联的 CIDR 和子网的托管或自管的节点组。