SNAT可以為VPC內無公網IP的雲端服務資源提供訪問公網的代理服務。如果您在建立ACS叢集時未配置SNAT,則需要手動設定SNAT為叢集開啟公網訪問能力,使得叢集中的Pod可以訪問公網。
背景資訊
公網NAT Gateway是一種公網地址轉換服務,提供NAT代理(SNAT和DNAT)能力。更多資訊,請參見公網NAT Gateway和NAT Gateway計費。
預設情況下,ACS叢集無法訪問公網。如果叢集中的Pod需要訪問公網,例如需要拉取公網鏡像,您可以在叢集所屬VPC中建立公網NAT Gateway並配置SNAT條目,實現叢集中的Pod均可訪問公網。
如果僅是某個Pod需要訪問公網,您可以為該Pod單獨綁定Elastic IP Address(即EIP)。具體操作,請參見通過配置註解為Pod掛載EIP。
操作步驟
以下步驟介紹如何為已有叢集配置SNAT,開啟公網訪問能力。
建立ACS叢集時,在配置 SNAT處,選中為專用網路配置 SNAT,系統會自動為叢集配置SNAT。
-
建立NAT Gateway。
-
單擊建立公網NAT Gateway。
-
在彈出頁面完成NAT Gateway參數配置,單擊立即購買並完成後續操作。
需要注意的參數如下。更多資訊,請參見公網 NAT Gateway。
配置
說明
所屬地區 、所屬專用網路
地區和VPC的配置需與叢集所屬地區和VPC保持一致。
訪問模式
請結合業務組網和安全性等因素進行選擇。本文以稍後配置 為例。
說明如果您不希望VPC下的所有資源均可訪問公網,例如您的VPC中除了叢集使用的交換器外,還有其他交換器,建議選擇稍後配置 。
-
專用網路全通模式(SNAT) :選擇該模式後,您需要配置NAT Gateway綁定的Elastic IP Address,並且系統會自動為您建立VPC粒度的SNAT條目。
-
稍後配置 :選擇該模式後,您需要另行綁定Elastic IP Address和建立SNAT條目。
-
-
-
為NAT Gateway綁定Elastic IP Address。
如果您在建立NAT Gateway時選擇專用網路全通模式(SNAT),則已綁定Elastic IP Address,可跳過該步驟。
-
在公網NAT Gateway頁面,找到目標NAT Gateway,然後在其右側單擊,選擇綁定Elastic IP Address。
-
在彈出的對話方塊中,完成Elastic IP Address配置,然後單擊確定。
-
-
建立SNAT條目。
如果您在建立NAT Gateway時選擇專用網路全通模式(SNAT),則已有VPC粒度的SNAT條目,可跳過該步驟。
-
在公網NAT Gateway頁面,單擊目標NAT Gateway的ID。
-
單擊SNAT管理頁簽,然後單擊建立SNAT條目。
-
完成SNAT條目配置,單擊確定建立。
需要注意的參數如下。更多資訊,請參見建立和管理SNAT條目。
配置
說明
SNAT條目粒度
請結合業務組網和安全性等因素進行選擇。建議選擇交換器粒度。
選擇交換器
當SNAT條目粒度選擇交換器粒度時,選擇叢集使用的交換器。
您可以在ACS叢集的叢集資訊頁面,在叢集資源頁簽下擷取查看配置的交換器ID。
選擇Elastic IP Address地址
選擇NAT Gateway綁定的Elastic IP Address,用於訪問公網。
-
-
確認NAT Gateway的配置資訊。
-
確認NAT Gateway所屬VPC與叢集所屬VPC一致,確認NAT Gateway已綁定的Elastic IP Address。
-
查看SNAT條目,確認已綁定叢集使用的交換器。
SNAT條目列表中,狀態列顯示為可用即表示交換器綁定正常。
-
結果驗證
-
方式1:建立一個使用公網鏡像的Pod,確認可以正常拉取鏡像,成功建立Pod。
在 Pod
test-pod的事件頁簽中,顯示一條 Normal 類型的事件記錄,內容為Successfully pulled image "centos:7" in 16.902s,狀態為 Pulled,表明公網鏡像已成功拉取。 -
方式2:在叢集內的Pod中,執行
ping命令訪問公網地址,確認能夠正常訪問,且資料包沒有丟失。樣本如下:
:~$ kubectl get pod NAME READY STATUS RESTARTS AGE test-pod 1/1 Running 0 24m :~$ kubectl exec -it test-pod -- bash [root@test-pod /]# ping aliyun.com -c 2 PING aliyun.com (140.205.60.46) 56(84) bytes of data. 64 bytes from 140.205.60.46 (140.205.60.46): icmp_seq=1 ttl=95 time=4.99 ms 64 bytes from 140.205.60.46 (140.205.60.46): icmp_seq=2 ttl=95 time=4.81 ms --- aliyun.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 4.813/4.905/4.997/0.092 ms