在Pod中访问外部网络

Pod可以访问VPC内的资源,包括ECS、RDS、OSS、SLB等,在经过配置后也可以获得访问公网的能力。本文介绍如何配置源端和目的端,使得Pod可以访问外部网络。

配置源端(Pod侧)

  • 配置域名解析

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

  • 配置网络策略

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

  • 配置安全组

    检查集群和Pod所属的安全组是否有限制Pod访问目标IP地址的规则,确保安全组规则满足以下要求:

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

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

配置目的端(访问目标侧)

Pod可以访问VPC内的资源,也可以访问公网。不同的访问目标,Pod配置方式不同。

image

访问公网

访问方式

适用场景

对外使用的公网IP地址

配置文档

通过公网NAT网关访问公网

多个Pod

公网NAT网关绑定的EIP地址

为集群开启公网访问能力

通过Pod绑定的EIP访问公网

单个Pod

Pod绑定的EIP地址

为Pod挂载独立公网EIP

访问同一VPC中的其他云资源

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

访问LoadBalancer类型的Service

访问集群自身暴露的LoadBalancer类型的Service的地址时,无论是公网还是内网,都会被集群内部拦截。针对此种情况,您需要修改Service的外部流量策略,合理配置Service。具体操作,请参见Kubernetes集群中访问LoadBalancer暴露出去的SLB地址不通