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