クラシック NLB をエッジ ワーカー ノードに分離する

クラシック

以下の手順では、クラスタ内の各パブリックVLANまたはプライベートVLAN上のワーカーノードに、「 dedicated=edge 」ラベルを追加します。 このラベルは、ネットワーク ロード バランサー (NLB) をこれらのワーカー ノードにのみデプロイするために使用されます。 パブリックおよびプライベートのNLBは、いずれもエッジワーカーノードに展開できます。

既存のワーカープールを使用する場合は、そのプールがクラスター内のすべてのゾーンにまたがっており、ゾーンごとに少なくとも2つのワーカーノードが存在する必要があります。 ibmcloud oc worker-pool label set コマンド を使用すると、ワーカープールに dedicated=edge というラベルを付けることができます。

開始前に

  1. ラベル付きのワーカープールを作成する dedicated=edge または、既存のワーカー プールの 1 つにラベルを追加します。

    • ワーカープールを作成するには、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 ポッドがエッジ・ノードにデプロイされていることを確認します。 前の手順の出力に表示されているロードバランサーサービスの外部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 ポッドも非エッジ・ノードにデプロイされていないことを確認します。 外部 IP アドレスが 169.46.17.2 である「 public-crc81nk5l10gfhdql4i3qg-nlb1 」NLB の例:
        oc describe nodes -l dedicated!=edge | grep "169-46-17-2"
        
        • NLB ポッドがエッジ・ノードに正しくデプロイされている場合は、NLB ポッドは返されません。 NLB は、エッジ・ワーカー・ノードのみに正常にスケジュール変更されています。
        • NLB ポッドが返された場合は、次のステップに進みます。
  6. NLB ポッドがまだ非エッジ・ノードにデプロイされている場合は、ポッドを削除して、エッジ・ノードに再デプロイすることができます。

    一度に削除できるポッドは1つだけです。他のポッドを削除する前に、そのポッドがエッジノードに再スケジューリングされていることを確認してください。

    1. ポッドを削除します。 たとえば、 public-crc81nk5l10gfhdql4i3qg-alb1 のNLBポッドの1つがエッジノードにスケジューリングされなかった場合:
        oc delete pod ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-wz6dg -n ibm-system
        ```
    2. このポッドがエッジ・ワーカー・ノードにスケジュール変更されていることを確認します。 スケジュール変更は自動的に行われますが、数分かかることがあります。 外部 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 へのインバウンド・トラフィックをブロックします