節點訪問 ( NodePort )是指在每個節點的IP上開放一個靜態端口,通過靜態端口對外暴露服務。節點訪問 ( NodePort )會路由到ClusterIP服務,這個ClusterIP服務會自動創建。通過請求 <NodeIP>:<NodePort>,可以從集群的外部訪問一個NodePort服務。
- “節點訪問 ( NodePort )”默認為VPC內網訪問,如果需要使用彈性IP通過公網訪問該服務,請提前在集群的節點上綁定彈性IP。
- 創建service后,如果服務親和從集群級別切換為節點級別,連接跟蹤表將不會被清理,建議用戶創建service后不要修改服務親和屬性,如需修改請重新創建servcie。
- 同一個節點內的容器不支持訪問externalTrafficPolicy為local的service。
您可以在創建工作負載時通過控制臺設置Service訪問方式,本節以nginx為例進行說明。
步驟 1 參考創建無狀態負載(Deployment)、創建有狀態負載(StatefulSet)或創建守護進程集(DaemonSet),在“工作負載訪問設置”步驟,單擊“添加服務”。
- 訪問類型:選擇“節點訪問 ( NodePort )”。
說明:如果需要使用彈性IP通過公網訪問該服務,請提前在集群的節點上綁定彈性IP。
- Service名稱:自定義服務名稱,可與工作負載名稱保持一致。
- 服務親和:
? 集群級別:集群下所有節點的IP+訪問端口均可以訪問到此服務關聯的負載,服務訪問會因路由跳轉導致一定性能損失,且無法獲取到客戶端源IP。
? 節點級別:只有通過負載所在節點的IP+訪問端口才可以訪問此服務關聯的負載,服務訪問沒有因路由跳轉導致的性能損失,且可以獲取到客戶端源IP。
- 端口配置:
? 協議:請根據業務的協議類型選擇。
? 容器端口:容器鏡像中工作負載實際監聽的端口,取值范圍為1-65535。
? 訪問端口:容器端口映射到節點私有IP上的端口,建議選擇“自動生成”。
自動生成:系統會自動分配端口號。
指定端口:指定固定的節點端口,默認取值范圍為30000-32767。若指定端口時,請確保同個集群內的端口唯一性。
步驟 2 完成配置后,單擊“確定”。
步驟 3 單擊“下一步:高級設置”進入高級設置頁面,直接單擊“創建”。
步驟 4 單擊“查看工作負載詳情”,在訪問方式頁簽下獲取訪問地址,例如“192.168.0.160:30358”。
您可以在工作負載創建完成后對Service進行配置,此配置對工作負載狀態無影響,且實時生效。具體操作如下:
步驟 1 登錄CCE控制臺,在左側導航欄中選擇“工作負載 > 無狀態負載 Deployment”,在工作負載列表頁單擊要設置Service的工作負載名稱。
說明:如果當前Service被關聯到Ingress,則更新Service的端口信息后Ingress將不可用,需要刪除重建。
步驟 2 在“Service”頁簽,單擊“添加Service”。
步驟 3 在“添加Service”頁面,訪問類型選擇“節點訪問 ( NodePort )”。
說明:如果需要使用彈性IP通過公網訪問該服務,請提前在集群的節點上綁定彈性IP。
步驟 4 設置節點訪問參數:
Service名稱:自定義服務名稱,可與工作負載名稱保持一致。
集群名稱:工作負載所在集群的名稱,此處不可修改。
命名空間:工作負載所在命名空間,此處不可修改。
關聯工作負載:要添加Service的工作負載,此處不可修改。
- 服務親和:
? 集群級別:集群下所有節點的IP+訪問端口均可以訪問到此服務關聯的負載,服務訪問會因路由跳轉導致一定性能損失,且無法獲取到客戶端源IP。
? 節點級別:只有通過負載所在節點的IP+訪問端口才可以訪問此服務關聯的負載,服務訪問沒有因路由跳轉導致的性能損失,且可以獲取到客戶端源IP。
- 端口配置:
? 協議:請根據業務的協議類型選擇。
? 容器端口:容器鏡像中工作負載程序實際監聽的端口,需用戶確定。nginx程序實際監聽的端口為80。
? 訪問端口:容器端口映射到節點私有IP上的端口,建議選擇“自動生成”。
自動生成:系統會自動分配端口號。
指定端口:指定固定的節點端口,默認取值范圍為30000-32767。若指定端口時,請確保同個集群內的端口唯一性。
步驟 5 單擊“創建”。工作負載已添加“節點訪問 ( NodePort )”的服務。
步驟 1 在管理控制臺首頁,單擊“計算 > 彈性云主機”。
步驟 2 在彈性云主機頁面,找到同一VPC內任意一臺云服務器,并確認連接到訪問地址中IP與端口的安全組是開放的。
步驟 3 單擊“遠程登錄”,彈出登錄頁面,輸入用戶密碼登錄。
步驟 4 使用curl命令訪問工作負載驗證工作負載是否可以正常訪問。
說明:
- 節點訪問(NodePort)會在集群內節點上分配一個虛擬IP,即可以在集群內部通過虛擬IP的驗證方式驗證。其中,虛擬IP訪問端口默認與容器端口一致。
- 如果需要使用彈性IP通過公網訪問該服務,請提前在集群的節點上綁定彈性IP。
curl 192.168.0.160:30358
其中“192.168.0.160:30358”為步驟4中獲取到的訪問地址,即節點虛擬IP+訪問端口。
回顯如下表示訪問成功。
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="//nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="//nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
您可以在添加完Service后,更新此Service的端口配置,操作步驟如下:
步驟 1 登錄CCE控制臺,在左側導航欄中選擇“資源管理 > 網絡管理”,在Service頁簽下,選擇對應的集群和命名空間,單擊需要更新端口配置的Service后的“更新”。
步驟 2 在更新Service頁面,訪問類型選擇“節點訪問 ( NodePort )”。
步驟 3 更新節點訪問參數:
- Service名稱:您創建的Service名稱,此處不可修改。
- 集群名稱:工作負載所在集群的名稱,此處不可修改。
- 命名空間:工作負載所在命名空間,此處不可修改。
- 關聯工作負載:要添加Service的工作負載,此處不可修改。
- 服務親和:
? 集群級別:集群下所有節點的IP+訪問端口均可以訪問到此服務關聯的負載,服務訪問會因路由跳轉導致一定性能損失,且無法獲取到客戶端源IP。
? 節點級別:只有通過負載所在節點的IP+訪問端口才可以訪問此服務關聯的負載,服務訪問沒有因路由跳轉導致的性能損失,且可以獲取到客戶端源IP。
- 端口配置:
? 協議:請根據業務的協議類型選擇。
? 容器端口:容器鏡像中工作負載程序實際監聽的端口,需用戶確定。nginx程序實際監聽的端口為80。
? 訪問端口:容器端口映射到節點私有IP上的端口,建議選擇“自動生成”。
自動生成:系統會自動分配端口號。
指定端口:指定固定的節點端口,默認取值范圍為30000-32767。若指定端口時,請確保同個集群內的端口唯一性。
步驟 4 單擊“更新”。工作負載已更新Service。