機械翻訳について

6 Kubernetesクラスタのスケーリング

Kubernetesクラスタは、単一または多数のコントロール・プレーン・ノードとワーカー・ノードで構成されます。 クラスタで実行するアプリケーションが多くなると、多くのリソース(ノード数)が必要になります。 大量のワークロードやトラフィックを処理するためにより多くのリソースが必要な場合や、さらに多くのサービスをクラスタにデプロイするために、実行することは何でしょうか。 クラスタに追加のノードを追加します。 また、クラスタ内でノードに障害が発生した場合はどうなりますか。 それを削除します。

Kubernetesクラスタのスケーリングとは、ノードの追加または削除によってクラスタを更新することです。 Kubernetesクラスタにノードを追加する場合は、クラスタをスケール・アップし、クラスタからノードを削除する場合は、クラスタをスケール・ダウンします。

クラスタ内のノードを置換するには、最初にクラスタをスケール・アップ(新しいノードを追加)してから、クラスタをスケール・ダウン(古いノードを削除)します。

ノート:

クラスタを同時にスケール・アップおよびスケール・ダウンしないことをお薦めします。 2つの個別のコマンドでスケール・アップしてからスケール・ダウンします。 スプリット・インのシナリオを回避するには、Kubernetesクラスタ・コントロール・プレーン・ノードを奇数でスケーリングします。 たとえば、3、5または7のコントロール・プレーン・ノードは、クラスタの信頼性を確保します。

Kubernetesモジュールの作成時に--apiserver-advertise-addressオプションを使用した場合、単一のコントロール・プレーン・ノードを持つクラスタから、多数のコントロール・プレーン・ノードを持つ高可用性(HA)クラスタにスケール・アップできません。 ただし、--virtual-ipオプションまたは--load-balancerオプションを使用した場合は、単一のコントロール・プレーン・ノードのクラスタのみである場合もスケール・アップできます。

重要:

--apiserver-advertise-addressオプションは非推奨になりました。 --control-plane-nodesオプションを使用します。

Kubernetesクラスタのスケーリング時には、次の作業を実行します。

  1. クラスタをバックアップします。 スケール・アップまたはスケール・ダウンの実行中に問題が発生した場合は、前の状態に戻するようにクラスタをリストアできます。 Kubernetesクラスタのバックアップおよびリストアの詳細は、「Kubernetesクラスタのバックアップおよびリストア」を参照してください。

  2. クラスタに追加するノードを検証します。 ノードの検証に問題がある場合(ファイアウォールの問題など)、クラスタの更新が続行できなくなり、そのノードはクラスタに追加できなくなります。 クラスタにノードを追加できるようにするために、検証の問題を解決する操作を求められます。

  3. コントロール・プレーン・ノードおよびワーカー・ノードをクラスタに追加するか、クラスタから削除します。

  4. クラスタをチェックして、すべてのノードが正常に動作していることを確認します。 クラスタの検証が完了したら、クラスタをスケーリングして、そのクラスタにアクセスします。

ヒント:

この章の例では、--control-plane-nodesおよび--worker-nodesオプションを使用してクラスタに含めるすべてのノードを指定することによって、コントロール・プレーン・ノードとワーカー・ノードを同時に変更してスケール・アップおよびスケール・ダウンする方法を示しています。 コントロール・プレーン・ノードのみをスケーリングする場合は、--control-plane-nodesオプションを使用して、クラスタに含めるコントロール・プレーン・ノードのリストのみを指定する必要があります(すべてのワーカー・ノードを指定する必要はありません)。 同様に、ワーカー・ノードのみをスケーリングする場合は、--worker-nodesオプションのみを使用してワーカー・ノードのリストを指定します。

 Kubernetesクラスタのスケール・アップ

Kubernetesクラスタのスケール・アップ前に、新しいノードをクラスタに追加できるように設定します。

ノードを準備するには:

  1. Kubernetesクラスタに追加できるようにノードを設定します。 Kubernetesノードの設定の詳細は、スタート・ガイドを参照してください。

  2. ノードにプライベートX.509証明書を使用している場合は、証明書をノードにコピーする必要があります。 Vaultを使用してノードの証明書を提供する場合、必要な処理はありません。 X.509証明書の使用の詳細は、スタート・ガイドを参照してください。

  3. Platform Agentサービスを起動します。 Platform Agentの起動の詳細は、スタート・ガイドを参照してください。

これらの作業を完了したら、この手順の説明を使用してKubernetesクラスタにノードを追加します。

Kubernetesクラスタをスケール・アップするには:

  1. Kubernetesクラスタのコントロール・プレーン・ノードから、kubectl get nodesコマンドを使用して、クラスタのコントロール・プレーン・ノードおよびワーカー・ノードを表示します。

    kubectl get nodes

    出力は次のようになります:

    NAME                   STATUS   ROLE             AGE     VERSION
    control1.example.com    Ready    control-plane   26h     version  
    control2.example.com    Ready    control-plane   26h     version
    control3.example.com    Ready    control-plane   26h     version
    worker1.example.com     Ready    <none>          26h     version
    worker2.example.com     Ready    <none>          26h     version
    worker3.example.com     Ready    <none>          26h     version

    この例では、3つのコントロール・プレーン・ノードがKubernetesクラスタにあります:

    • control1.example.com

    • control2.example.com

    • control3.example.com

    また、3つのワーカー・ノードもクラスタ内にあります:

    • worker1.example.com

    • worker2.example.com

    • worker3.example.com

  2. olcnectl module updateコマンドを使用して、Kubernetesクラスタをスケール・アップします。

    この例では、Kubernetesクラスタは、コントロール・プレーン・ノードが4つ、ワーカー・ノードが5つになるようにスケール・アップされます。 この例では、新しいコントロール・プレーン・ノード(control.example.com)と2つの新しいワーカー・ノード(worker4.example.comおよびworker5.example.com)をmyclusterというKubernetesモジュールに追加します。 オペレータ・ノードで次のコマンドを実行します。

    olcnectl module update \
    --environment-name myenvironment \  
    --name mycluster \
    --control-plane-nodes control1.example.com:8090,control2.example.com:8090,control3.example.com:8090,\
    control4.example.com:8090 \
    --worker-nodes worker1.example.com:8090,worker2.example.com:8090,worker3.example.com:8090,\
    worker4.example.com:8090,worker5.example.com:8090

    単一のコントロール・プレーン・ノードから高可用性クラスタにスケール・アップする場合は、クラスタのロード・バランサを指定していることを確認してください。 ロード・バランサを指定しない場合、コントロール・プレーン・ノードをスケール・アップできません。 つまり、単一のコントロール・プレーン・ノードから、ロード・バランサがない高可用性クラスタに移動することはできません。

    必要に応じて、--generate-scriptsオプションを指定できます。 このオプションでは、スケーリング中に検証が失敗した場合に、ノードごとに実行できるスクリプトが生成されます。 モジュール内の各ノードに対してスクリプトが作成され、ローカル・ディレクトリに保存され、hostname:8090.shという名前が付けられます。

    必要に応じて、--forceオプションを指定し、クラスタのスケーリングの続行を確認するプロンプトを非表示にすることもできます。

  3. Kubernetesクラスタのコントロール・プレーン・ノードで、kubectl get nodesコマンドを使用して、クラスタがスケール・アップされ、新しいコントロール・プレーン・ノードおよびワーカー・ノードが含まれることを確認します。

    kubectl get nodes

    出力は次のようになります:

    NAME                   STATUS   ROLE            AGE     VERSION
    control1.example.com    Ready   control-plane   26h     version  
    control2.example.com    Ready   control-plane   26h     version
    control3.example.com    Ready   control-plane   26h     version
    control4.example.com    Ready   control-plane   2m38s   version
    worker1.example.com     Ready   <none>          26h     version
    worker2.example.com     Ready   <none>          26h     version
    worker3.example.com     Ready   <none>          26h     version
    worker4.example.com     Ready   <none>          2m38s   version
    worker5.example.com     Ready   <none>          2m38s   version

 Kubernetesクラスタのスケール・ダウン

この手順では、Kubernetesクラスタからノードを削除する方法を示します。

注意:

クラスタのコントロール・プレーン・ノードをスケール・ダウンする場合は注意してください。 2つのコントロール・プレーン・ノードがあり、スケール・ダウンしてコントロール・プレーン・ノードを1つのみにすると、シングル・ポイント障害になります。

Kubernetesクラスタをスケール・ダウンするには:

  1. Kubernetesクラスタのコントロール・プレーン・ノードから、kubectl get nodesコマンドを使用して、クラスタのコントロール・プレーン・ノードおよびワーカー・ノードを表示します。

    kubectl get nodes

    出力は次のようになります:

    NAME                   STATUS   ROLE            AGE     VERSION
    control1.example.com   Ready    control-plane   26h     version  
    control2.example.com   Ready    control-plane   26h     version
    control3.example.com   Ready    control-plane   26h     version
    control4.example.com   Ready    control-plane   2m38s   version
    worker1.example.com    Ready    <none>          26h     version
    worker2.example.com    Ready    <none>          26h     version
    worker3.example.com    Ready    <none>          26h     version
    worker4.example.com    Ready    <none>          2m38s   version
    worker5.example.com    Ready    <none>          2m38s   version

    この例では、4つのコントロール・プレーン・ノードがKubernetesクラスタにあります:

    • control1.example.com

    • control2.example.com

    • control3.example.com

    • control4.example.com

    クラスタには、次の5つのワーカー・ノードもあります:

    • worker1.example.com

    • worker2.example.com

    • worker3.example.com

    • worker4.example.com

    • worker5.example.com

  2. olcnectl module updateコマンドを使用して、Kubernetesクラスタをスケール・ダウンします。

    この例では、Kubernetesクラスタは、コントロール・プレーン・ノードが3つ、ワーカー・ノードが3つになるようにスケール・ダウンされます。 この例では、コントロール・プレーン・ノード(control4.example.com)と2つのワーカー・ノード(worker4.example.comおよびworker5.example.com)をmyclusterというKubernetesモジュールから削除します。 ノードは--control-plane-nodesまたは--worker-nodesオプションに一覧表示されなくなったため、クラスタから削除されます。 オペレータ・ノードで次のコマンドを実行します。

    olcnectl module update \
    --environment-name myenvironment \  
    --name mycluster \
    --control-plane-nodes control1.example.com:8090,control2.example.com:8090,control3.example.com:8090 \
    --worker-nodes worker1.example.com:8090,worker2.example.com:8090,worker3.example.com:8090
  3. Kubernetesクラスタのコントロール・プレーン・ノードで、kubectl get nodesコマンドを使用して、クラスタがスケール・ダウンされていることを確認し、コントロール・プレーン・ノードおよびワーカー・ノードを削除します。

    kubectl get nodes

    出力は次のようになります:

    NAME                   STATUS   ROLE            AGE     VERSION
    control1.example.com   Ready    control-plane   26h     version  
    control2.example.com   Ready    control-plane   26h     version
    control3.example.com   Ready    control-plane   26h     version
    worker1.example.com    Ready    <none>          26h     version
    worker2.example.com    Ready    <none>          26h     version
    worker3.example.com    Ready    <none>          26h     version