將經典 NLB 與邊緣工作節點隔離

經典

在以下步驟中,您將會新增 dedicated=edge 為叢集中每個公共或專用 VLAN 上的工作節點新增標籤。 此標籤用於僅將網路負載平衡器 (NLB) 部署到這些工作節點。 無論是公共還是私有 NLB,皆可部署至邊緣工作節點。

若您計畫使用現有的工作節點池,該池必須涵蓋叢集中的所有區域,且每個區域至少須有兩個工作節點。 您可以將工作池標記為 dedicated=edge 透過使用 ibmcloud oc worker-pool label set 命令

開始之前

  1. 使用標籤建立工作池 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
        ```
    
  2. 驗證工作者節點儲存區和工作者節點是否具有 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>
        ```
    
    
    
    
  3. 擷取叢集中所有現有的 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
    
  4. 根據前一步驟的輸出結果,針對每個 NLB 執行以下指令。 此指令會將 NLB 重新部署至邊緣工作節點。

    oc get service -n <namespace> <name> -o yaml | oc apply -f -
    

    輸出範例:

    service "router-default" configured
    
  5. 為驗證網路工作負載是否僅限於邊緣節點,請確認負載平衡器已排程至邊緣節點,且未排程至非邊緣節點。

    • NLB 吊艙
      1. 確認是否將 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%)
        
      2. 確認是否沒有任何 NLB Pod 部署到非邊緣節點。 以下是外部 IP 位址為 169.46.17.2public-crc81nk5l10gfhdql4i3qg-nlb1 NLB 的範例:
        oc describe nodes -l dedicated!=edge | grep "169-46-17-2"
        
        • 如果 NLB Pod 正確部署到了邊緣節點,則不會傳回任何 NLB Pod。 NLB 已順利地重新排定到僅邊緣工作者節點上。
        • 如果傳回了 NLB Pod,請繼續執行下一步。
  6. 如果 NLB Pod 仍部署在非邊緣節點上,您可以刪除這些 Pod,使其重新部署至邊緣節點。

    每次僅刪除一個 Pod,並在刪除其他 Pod 之前,請確認該 Pod 已重新排程至邊緣節點。

    1. 刪除 Pod。 舉例來說,如果其中一個 public-crc81nk5l10gfhdql4i3qg-alb1 NLB 群集未將任務排程至邊緣節點:
        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%)
        ```
    
    
    

您已使用 dedicated=edge 標記工作節點池中的工作節點,並將所有現有的 NLB 重新部署至邊緣節點。 之後新增至叢集的所有 NLB,也會部署到您的邊緣工作節點池中的某個邊緣節點上。 接下來,請避免其他工作負載在邊緣工作者節點上執行,以及封鎖對工作者節點上 NodePort 的入埠資料流量