在Pod中访问外部网络
Pod可以访问公网,也支持访问VPC内资源,包括已有的ECS、SLB等自有资源,RDS、OSS等云服务和自身集群暴露的LoadBalancer。本文介绍如何配置访问来源侧和目的侧,使得Pod可以访问外部网络。
配置访问来源侧
配置域名解析
当访问外部网络时,Pod会使用集群的域名解析功能解析访问目标的地址,然后会经过Pod侧的网络策略再进行访问。如果域名无法解析,您需要排查DNS异常问题。
配置网络策略
检查Pod所在的命名空间是否设置网络策略,并且检查该网络策略是否限制了Pod不能访问目标地址。如果有,您需要修改网络策略。具体操作,请参见在容器计算服务使用网络策略。
配置安全组
检查集群的安全组以及Pod所在的ECS的安全组是否有限制Pod访问目标地址的规则,确保安全组符合以下规则:
安全组出方向需要有允许Pod访问目标地址和端口的规则。
安全组出方向不能有拒绝Pod访问目标地址和端口的规则。
配置访问目的侧
Pod可以访问公网,也支持访问VPC内资源,包括已有的ECS、SLB等自有资源,RDS、OSS等云服务和自身集群暴露的LoadBalancer。不同的访问目标,Pod配置方式不同。
访问公网
在访问公网IPv4地址时, Pod使用的IP地址是私网IP地址。如果Pod需要访问外部公网,需要使用公网的EIP或者NAT网关。为Pod配置公网的方式如下:
访问方式 | 网关和EIP配置 | 对外使用的公网IP地址 |
通过NAT网关访问公网 | 为集群绑定公网EIP。具体操作,请参见为已有集群开启公网访问能力。 | NAT网关绑定的公网EIP地址。 |
通过Pod绑定的EIP访问公网(仅支持Terway) | 为Pod绑定公网EIP。具体操作,请参见为Pod挂载独立公网EIP。 | Pod绑定的公网EIP地址。 |
访问已有的ECS、SLB等自有资源
Pod访问已有的ECS或者SLB时,访问目的端通常会有一些安全组或者ACL规则限制访问来源。如果限制了Pod访问的来源IP,就会出现网络不通的问题。您需要为Pod开放来源IP:来源IP为Pod的IP,安全组或者ACL需要开放Pod的vSwitch网段。
访问RDS、OSS等云服务
部分云服务需要为访问的来源指定IP的白名单才能访问。规则:配置Pod的vSwitch网段到对应云服务的白名单。
您也可以使用ack-kubernetes-webhook-injector自动配置云服务的白名单。具体操作,请参见为Pod动态配置阿里云产品白名单。
访问自身集群暴露的LoadBalancer
对于集群自身暴露的LoadBalancer类型的Service的地址,无论是公网还是内网的,都会被集群内部拦截。针对此种情况,您需要修改Service的外部流量策略,合理配置Service。具体操作,请参见Kubernetes集群中访问LoadBalancer暴露出去的SLB地址不通。