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配置方式不同。
访问公网
访问方式 | 适用场景 | 对外使用的公网IP地址 | 配置文档 |
通过公网NAT网关访问公网 | 多个Pod | 公网NAT网关绑定的EIP地址 | |
通过Pod绑定的EIP访问公网 | 单个Pod | Pod绑定的EIP地址 |
访问同一VPC中的其他云资源
Pod访问集群所属VPC中的其他云资源(例如ECS、RDS、OSS等)时,访问目的端可能会有一些访问控制规则限制了访问的来源,例如安全组、ACL规则或白名单机制等。如果访问目的端限制了Pod访问时使用的IP,则会出现网络不通的问题。您需要在访问控制规则中为Pod使用的IP设置放行。
访问LoadBalancer类型的Service
访问集群自身暴露的LoadBalancer类型的Service的地址时,无论是公网还是内网,都会被集群内部拦截。针对此种情况,您需要修改Service的外部流量策略,合理配置Service。具体操作,请参见Kubernetes集群中访问LoadBalancer暴露出去的SLB地址不通。