全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:Pod访问外部网络时的注意事项

更新时间:Jul 22, 2024

Pod可以作为客户端访问VPC内的资源,包括ECS、RDS、OSS等,在经过配置后也可以获取访问公网的能力。本文介绍在为Pod配置访问外部网络时的注意事项。

配置Pod注意事项

  • 配置域名解析

    当访问外部网络时,Pod会使用集群的域名解析功能解析访问目标的IP,然后会经过Pod侧的网络策略再进行访问。如果域名无法解析,您需要排查DNS异常问题。具体操作,请参见DNS解析异常问题排查

  • 配置网络策略

    检查Pod所在的命名空间是否设置网络策略,并且检查该网络策略是否限制了Pod不能访问目标IP。如果有,您需要修改网络策略。具体操作,请参见在ACK集群使用网络策略

  • 配置安全组

    检查集群的安全组以及Pod所在的ECS的安全组是否有限制Pod访问目标IP的规则,确保安全组符合以下规则:

    • 安全组出方向需要有允许Pod访问目标IP和端口的规则。

    • 安全组出方向不能有拒绝Pod访问目标IP和端口的规则。

    关于如何管理集群安全组,请参见配置集群安全组

配置访问目的注意事项

Pod可以访问公网,也支持访问VPC内资源,包括已有的ECS、SLB等自有资源,RDS、OSS等云服务和自身集群暴露的LoadBalancer。不同的访问目标,Pod配置方式不同。

image

访问公网

在IPv4单栈的集群中,Pod只有IPv4地址,只能访问公网IPv4地址,无法访问IPv6地址。

集群开启双栈后,Pod同时拥有IPv4地址和IPv6地址。IPv4地址是私网IP地址,而IPv6地址是公网地址。

不同类型的集群配置时的注意事项不同:

  • IPv4单栈集群:

    在单栈集群中使Pod拥有访问公网的能力,需要为Pod挂载公网EIP或使用NAT网关。下面介绍3种为Pod配置访问能力的方式:

    访问公网方式

    Terway网络插件

    Flannel网络插件

    通过NAT网关访问公网

    SNAT规则中需要包含Pod的SNAT条目。配置NAT网关,请参见为已有集群开启公网访问能力

    对外使用的公网IP地址为NAT网关绑定的公网EIP地址。

    SNAT规则中需要包含Pod所在节点的SNAT条目。配置NAT网关,请参见为已有集群开启公网访问能力

    对外使用的公网IP地址为NAT网关绑定的公网EIP地址。

    直接绑定EIP访问公网

    Terway支持为Pod绑定公网IP。具体操作,请参见为Pod挂载独立公网EIP

    对外使用的公网IP地址为Pod绑定的公网EIP地址。

    Flannel仅支持Pod通过节点绑定的EIP访问公网。具体操作,请参见绑定和解绑弹性公网IP

    对外使用的公网IP地址为节点绑定的公网EIP地址。

    访问方式

    注意事项

    对外使用的公网IP地址

    通过NAT网关访问公网

    • 使用Terway的集群:SNAT规则中需要包含Pod的SNAT条目。

    • 使用Flannel的集群:SNAT规则中需要包含Pod所在节点的SNAT条目。

    配置NAT网关,请参见为已有集群开启公网访问能力

    NAT网关绑定的公网EIP地址。

    通过节点绑定的EIP访问公网(仅支持Flannel)

    为Pod所在的ECS绑定公网EIP。具体操作,请参见绑定和解绑弹性公网IP

    节点绑定的公网EIP地址。

    通过Pod绑定的EIP访问公网(仅支持Terway)

    为Pod绑定公网EIP。具体操作,请参见为Pod挂载独立公网EIP

    Pod绑定的公网EIP地址。

  • 双栈集群:

    在双栈集群中,Pod的IPv6地址虽然是公网地址,但默认情况下没有为该地址配置公网带宽。如需为Pod配置公网带宽。具体操作,请参见为Pod配置IPv6公网带宽

访问VPC中的资源

Pod访问集群中的其他资源,例如ECS、RDS、OSS等时,访问目的端可能会有一些访问控制规则限制了访问的来源,例如安全组、ACL规则或白名单机制等。如果限制了Pod访问时使用的IP,就会出现网络不通的问题。您需要在访问控制规则中为Pod使用的IP设置放行:

  • Terway网络下,Pod使用自身的IP。VPC中其他资源所使用的安全组、ACL、白名单需要对Pod的IP放行。

  • Flannel网络下,Pod使用的所在节点的IP。VPC中其他资源所使用的安全组、ACL、白名单需要对Pod所在ECS的IP放行。

您也可以使用ack-kubernetes-webhook-injector自动配置云服务的白名单。具体操作,请参见为Pod动态配置阿里云产品白名单

访问集群使用的负载均衡实例

Pod访问集群中Service使用的负载均衡实例时,会使用短路机制,即负载均衡的IP会被转换为对应后端的Pod IP直接访问,实际流量不会离开集群。 在Terway v1.1.0及更早的版本中,使用IPvlan+eBPF加速模式的集群并不支持这种机制,而会使用负载均衡的IP进行访问。在Terway v1.2.0及之后的版本中,新建集群支持该功能,但更早创建的集群并不支持。如果您需要使用这种机制,请参见如何为Terway IPvlan集群开启集群内负载均衡?