將經典 NLB 與邊緣工作節點隔離
經典
在以下步驟中,您將會新增 dedicated=edge 為叢集中每個公共或專用 VLAN 上的工作節點新增標籤。 此標籤用於僅將網路負載平衡器 (NLB) 部署到這些工作節點。 無論是公共還是私有 NLB,皆可部署至邊緣工作節點。
若您計畫使用現有的工作節點池,該池必須涵蓋叢集中的所有區域,且每個區域至少須有兩個工作節點。 您可以將工作池標記為 dedicated=edge 透過使用 ibmcloud oc worker-pool label set 命令。
開始之前
- 請確定您有下列 IBM Cloud IAM 角色:
- 該叢集的任何平台存取角色
- 所有命名空間的「撰寫者」或「管理員」服務存取角色
- 訪問您的Red Hat OpenShift簇。
-
使用標籤建立工作池
dedicated=edge或將標籤新增至您現有的工作池之一。- 若要建立工作池,您可以使用
worker-pool create classic命令。
ibmcloud oc worker-pool create classic --name POOL_NAME --cluster CLUSTER --flavor FLAVOR --size-per-zone WORKERS_PER_ZONE --hardware ISOLATION --label dedicated=edge ``` * 若要標記現有工作池,您可以使用 `worker-pool label set`[命令](/docs/openshift?topic=openshift-kubernetes-service-cli#worker-pool-label-set-cli)。 ```sh {: pre} ibmcloud oc worker-pool label set --cluster CLUSTER --worker-pool POOL --label dedicated=edge ``` - 若要建立工作池,您可以使用
-
驗證工作者節點儲存區和工作者節點是否具有
dedicated=edge標籤。- 若要檢查工作池,請執行
get命令。
ibmcloud oc worker-pool get --cluster CLUSTER_NAME_OR_ID --worker-pool WORKER_POOL_NAME_OR_ID ``` * 若要檢查個別工作者節點,請檢閱下列指令輸出中的 **Labels** 欄位。 ```sh {: pre} oc describe node <worker_node_private_IP> ``` - 若要檢查工作池,請執行
-
擷取叢集中所有現有的 NLB。 在輸出結果中,請注意每個負載平衡器的命名空間和名稱。
oc get services --all-namespaces | grep LoadBalancer輸出範例:
PORT(S) AGE router-default 80:31228/TCP,443:31655/TCP 4h54m LoadBalancer 172.21.71.79 169.46.17.2 -
根據前一步驟的輸出結果,針對每個 NLB 執行以下指令。 此指令會將 NLB 重新部署至邊緣工作節點。
oc get service -n <namespace> <name> -o yaml | oc apply -f -輸出範例:
service "router-default" configured -
為驗證網路工作負載是否僅限於邊緣節點,請確認負載平衡器已排程至邊緣節點,且未排程至非邊緣節點。
- NLB 吊艙
- 確認是否將 NLB Pod 部署到了邊緣節點。 請搜尋前一步驟輸出結果中列出的負載平衡服務之外部 IP 位址。 替換句點 (
.) 帶有連字符 (-)。在以下範例中crc81nk5l10gfhdql4i3qg,NLB 的外部 IP 位址為169.46.17.2。輸出範例:oc describe nodes -l dedicated=edge | grep "169-46-17-2"ibm-system ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-wz6dg 5m (0%) 0 (0%) 10Mi (0%) 0 (0%) ibm-system ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-2z64r 5m (0%) 0 (0%) 10Mi (0%) 0 (0%) - 確認是否沒有任何 NLB Pod 部署到非邊緣節點。 以下是外部 IP 位址為
169.46.17.2的public-crc81nk5l10gfhdql4i3qg-nlb1NLB 的範例:oc describe nodes -l dedicated!=edge | grep "169-46-17-2"- 如果 NLB Pod 正確部署到了邊緣節點,則不會傳回任何 NLB Pod。 NLB 已順利地重新排定到僅邊緣工作者節點上。
- 如果傳回了 NLB Pod,請繼續執行下一步。
- 確認是否將 NLB Pod 部署到了邊緣節點。 請搜尋前一步驟輸出結果中列出的負載平衡服務之外部 IP 位址。 替換句點 (
- NLB 吊艙
-
如果 NLB Pod 仍部署在非邊緣節點上,您可以刪除這些 Pod,使其重新部署至邊緣節點。
每次僅刪除一個 Pod,並在刪除其他 Pod 之前,請確認該 Pod 已重新排程至邊緣節點。
- 刪除 Pod。 舉例來說,如果其中一個
public-crc81nk5l10gfhdql4i3qg-alb1NLB 群集未將任務排程至邊緣節點:
oc delete pod ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-wz6dg -n ibm-system ``` 2. 驗證 Pod 是否已重新排定到邊緣工作者節點上。 重新排定是自動執行的,但可能需要幾分鐘時間。 以下是外部 IP 位址為 `169.46.17.2` 的 `public-crc81nk5l10gfhdql4i3qg-alb1` NLB 的範例: ```sh {: pre} oc describe nodes -l dedicated=edge | grep "169-46-17-2" ``` 輸出範例: ```sh {: screen} ibm-system ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-wz6dg 5m (0%) 0 (0%) 10Mi (0%) 0 (0%) ibm-system ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-2z64r 5m (0%) 0 (0%) 10Mi (0%) 0 (0%) ``` - 刪除 Pod。 舉例來說,如果其中一個
您已使用 dedicated=edge 標記工作節點池中的工作節點,並將所有現有的 NLB 重新部署至邊緣節點。 之後新增至叢集的所有 NLB,也會部署到您的邊緣工作節點池中的某個邊緣節點上。 接下來,請避免其他工作負載在邊緣工作者節點上執行,以及封鎖對工作者節點上 NodePort 的入埠資料流量。