帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
为 pods 启用出站互联网接入
适用于:Linux IPv4
Fargate 节点、带有 Amazon EC2 实例的 Linux 节点
如果您使用 IPv6
系列部署集群,那么本主题中的信息不适用于您的集群,因为 IPv6
地址未进行网络转换。有关集群使用 IPv6
的详细信息,请参阅 将 IPv6 地址分配给您的集群、pods 和服务。
默认情况下,您的集群中的每个 Pod 都从无类别域间路由(CIDR)块中分配到一个私有 IPv4
地址,该块与 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 核心