为 pods 启用出站互联网接入
适用于:Linux IPv4
Fargate 节点以及带有 Amazon EC2 实例的 Linux 节点
如果您使用 IPv6
系列部署集群,那么本主题中的信息不适用于您的集群,因为 IPv6
地址未进行网络转换。有关集群使用 IPv6
的详细信息,请参阅 了解如何将 IPv6 地址分配给集群、pods 和服务。
默认情况下,您的集群中的每个 Pod 都从无类别域间路由(CIDR)块中分配到一个 link:AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-private-addressesIPv4
地址,该块与 Pod 部署在其中的 VPC 关联。相同 VPC 中的 Pods 使用这些私有 IP 地址作为端点来相互通信。当 Pod 与不在与您的 VPC 关联的 CIDR 块内的任何 IPv4
地址通信时,Amazon VPC CNI 插件(适用于 LinuxIPv4
地址转换为 Pod 运行所在的节点的主弹性网络接口的主私有 IPv4
地址,默认为 ^* ^。
注意
对于 Windows 节点,还有其他详细信息需要考虑。默认情况下,适用于 Windows 的 VPC CNI 插件
由于此行为:
如果以下任一陈述在您的环境中成立,则使用以下命令更改默认配置。
-
您在网络或 VPC 中有资源使用 VPC 对等、中转 VPC 或 AWS Direct Connect 连接到您的集群 VPC,它们需要使用
IPv4
地址启动与Pods的通信,并且您的插件版本早于1.8.0
。
kubectl set env daemonset -n kube-system aws-node AWS_VPC_K8S_CNI_EXTERNALSNAT=true
注意
AWS_VPC_K8S_CNI_EXTERNALSNAT
和 AWS_VPC_K8S_CNI_EXCLUDE_SNAT_CIDRS
CNI 配置变量不适用于 Windows 节点。Windows 不支持禁用 SNAT。至于从 SNAT 中排除 IPv4
CIDR 列表,您可以通过在 Windows 引导脚本中指定 ExcludedSnatCIDRs
参数来定义。有关使用该参数的更多信息,请参阅 引导脚本配置参数。
主机网络
^*^如果 Pod’s 规范包含 hostNetwork=true
(默认值为 false
),那么它的 IP 地址不会转换为其它地址。对于在您的集群上运行的 kube-proxy
和 Amazon VPC CNI plugin for Kubernetes Pods,默认情况便是如此。对于这些 Pods,IP 地址与节点的主 IP 地址相同,因此 Pod’s IP 地址未转换。有关的 Pod’s hostNetwork
设置的更多信息,请参阅 Kubernetes API 参考中的 PodSpec v1 核心