アプリのワークロードがエッジ・ワーカー・ノードで実行されないようにする

仮想プライベートクラウド クラシック・インフラストラクチャー

エッジ・ワーカー・ノードの利点の 1 つは、それらがネットワーク・サービスだけを実行するように指定できることです。

エッジワーカーノードでワークロードが実行され、ワーカーノードのリソースが消費されるのを防ぐには、Kubernetes汚点

開始前に

  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
        ```
    * VPCワーカープールを作成するには、`worker-pool create vpc-gen2`[指示](/docs/containers?topic=containers-kubernetes-service-cli#worker-pool-create-vpc-gen2-cli)。
    ```sh {: pre}
        ibmcloud oc worker-pool create vpc-gen2 --name POOL_NAME --cluster CLUSTER --flavor FLAVOR --size-per-zone WORKERS_PER_ZONE --hardware ISOLATION --label dedicated=edge
        ```
    * 既存のワーカープールにラベルを付けるには、`worker-pool label set`[指示](/docs/containers?topic=containers-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 ks worker-pool get --cluster CLUSTER_NAME_OR_ID --worker-pool WORKER_POOL_NAME_OR_ID
        ```
    * 個々のワーカー・ノードを確認するには、以下のコマンドの出力の **Labels** フィールドを確認します。
    ```sh {: pre}
        kubectl describe node <worker_node_private_IP>
        ```
    
    
  3. dedicated=edge ラベルの付いたワーカー・ノードにテイントを適用します。 このテイントにより、ポッドがワーカー・ノードで実行されなくなり、dedicated=edge ラベルが付いていないポッドがワーカー・ノードから削除されます。 削除されたポッドは、容量のある他のワーカー・ノードに再デプロイされます。

    ワーカー・プール内の既存のワーカー・ノードと将来のワーカー・ノードのすべてにテイントを適用するには、以下のようにします。

    ibmcloud ks worker-pool taint set -c CLUSTER_NAME_OR_ID --worker-pool WORKER_POOL_NAME_OR_ID --taint dedicated=edge:NoExecute
    

    個々のワーカー・ノードにテイントを適用するには、以下のようにします。

    kubectl taint node -l dedicated=edge dedicated=edge:NoExecute
    

    これで、dedicated=edge 耐障害性のあるポッドだけがエッジ・ワーカー・ノードにデプロイされます。

  4. エッジ・ノードにテイントが適用されていることを確認します。

    kubectl describe nodes -l dedicated=edge | egrep "Taints|Hostname"
    

    出力例:

    Taints:             dedicated=edge:NoExecute
        Hostname:    10.176.48.83
      Taints:             dedicated=edge:NoExecute
    Hostname:    10.184.58.7