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配置方式不同。
訪問公網
在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集群開啟集群內負載均衡?。