全部產品
Search
文件中心

Container Service for Kubernetes:Pod訪問外部網路時的注意事項

更新時間:Jul 23, 2024

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 Gateway。下面介紹3種為Pod配置訪問能力的方式:

    訪問公網方式

    Terway網路外掛程式

    Flannel網路外掛程式

    通過NAT Gateway訪問公網

    SNAT規則中需要包含Pod的SNAT條目。配置NAT Gateway,請參見為已有叢集開啟公網訪問能力

    對外使用的公網IP地址為NAT Gateway綁定的公網EIP地址。

    SNAT規則中需要包含Pod所在節點的SNAT條目。配置NAT Gateway,請參見為已有叢集開啟公網訪問能力

    對外使用的公網IP地址為NAT Gateway綁定的公網EIP地址。

    直接綁定EIP訪問公網

    Terway支援為Pod綁定公網IP。具體操作,請參見為Pod掛載獨立公網EIP

    對外使用的公網IP地址為Pod綁定的公網EIP地址。

    Flannel僅支援Pod通過節點綁定的EIP訪問公網。具體操作,請參見綁定和解除綁定Elastic IP Address

    對外使用的公網IP地址為節點綁定的公網EIP地址。

    訪問方式

    注意事項

    對外使用的公網IP地址

    通過NAT Gateway訪問公網

    • 使用Terway的叢集:SNAT規則中需要包含Pod的SNAT條目。

    • 使用Flannel的叢集:SNAT規則中需要包含Pod所在節點的SNAT條目。

    配置NAT Gateway,請參見為已有叢集開啟公網訪問能力

    NAT Gateway綁定的公網EIP地址。

    通過節點綁定的EIP訪問公網(僅支援Flannel)

    為Pod所在的ECS綁定公網EIP。具體操作,請參見綁定和解除綁定Elastic IP Address

    節點綁定的公網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動態配置阿里雲產品白名單

訪問叢集使用的Server Load Balancer執行個體

Pod訪問叢集中Service使用的Server Load Balancer執行個體時,會使用短路機制,即負載平衡的IP會被轉換為對應後端的Pod IP直接存取,實際流量不會離開叢集。 在Terway v1.1.0及更早的版本中,使用IPvlan+eBPF加速模式的叢集並不支援這種機制,而會使用負載平衡的IP進行訪問。在Terway v1.2.0及之後的版本中,建立叢集支援該功能,但更早建立的叢集並不支援。如果您需要使用這種機制,請參見如何為Terway IPvlan叢集開啟叢集內負載平衡?