本文介紹如何通過域名訪問 Pod。
步驟一:開啟有狀態模式
在創建應用服務或者編輯應用服務的 填寫基本信息 階段,開啟 有狀態模式。
開啟后,Pod 名稱會加上 -0
、-1
... 數字后綴。待應用服務發布成功后,可前往應用服務詳情頁查看 Pod 名稱是否已加上 -0
、-1
... 數字后綴。
步驟二:配置 Headless Service
在創建應用服務或者編輯應用服務的 訪問配置 階段,添加 Headless Service 名稱。本例中輸入 svc。Headless Service 名稱即為 test0928jf-svc。
步驟三:基于域名規則計算 Pod 域名
域名規則如下:
Service 命名規則:<Headless Service 名稱>-cell-<部署單元名>
示例:test0928jf-svc-cell-rz00a
Hostname 命名規則:<應用服務名>-<部署單元名>-<Pod number>
說明Pod Number:Cell 維度從 0 開始遞增的數字。
應用服務發布完成后,可前往應用服務詳情頁查看 Pod 名稱,Pod 名稱最后一位即為 Pod Number。
示例:test0928jf-rz00a-0
Pod 域名規則:<hostname>.<service name>
示例:test0928jf-rz00a-0.test0928jf-svc-cell-rz00a
假設部署單元 rz00a 有 2 個副本,基于上述規則,計算結果如下:
計算項 | 計算結果 |
Service | test0928jf-svc-cell-rz00a |
Hostname | test0928jf-rz00a-0 test0928jf-rz00a-1 |
Pod 域名 | test0928jf-rz00a-0.test0928jf-svc-cell-rz00a test0928jf-rz00a-1.test0928jf-svc-cell-rz00a |
通過 Ping 命令驗證能否訪問 Service:test0928jf-svc-cell-rz00a。
通過 Ping 命令驗證能否訪問 Pod 域名:test0928jf-rz00a-0.test0928jf-svc-cell-rz00a、test0928jf-rz00a-1.test0928jf-svc-cell-rz00a。
Pod 域名只能在集群內部訪問,如果應用服務發布的部署單元屬于不同的集群,則不同的部署單元之間通過 Pod 域名無法訪問。
步驟四:添加環境變量 POD_ENDPOINTS = <Pod 域名>
在編輯應用服務的 Pod 模板配置 階段,開啟 覆蓋配置 后,新建環境變量,將上面的域名列表寫入環境變量,變量名支持自定義:
POD_ENDPOINTS= test0928jf-rz00a-0.test0928jf-svc-cell-rz00a,test0928jf-rz00a-1.test0928jf-svc-cell-rz00a
待應用服務發布后,即可從環境變量中獲取所有 Pod 的域名列表。環境變量名可以按需定義。