このドキュメントで説明されているソフトウェアは、サポートされなくなったか、拡張サポートされています。
Oracleでは、現在サポートされているリリースにアップグレードすることをお勧めします。

機械翻訳について

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

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

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

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

ノート

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

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

重要

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

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

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

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

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

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

ヒント

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

6.1 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 master 26h v1.20.x+x.x.x.el8 control2.example.com Ready master 26h v1.20.x+x.x.x.el8 control3.example.com Ready master 26h v1.20.x+x.x.x.el8 worker1.example.com Ready <none> 26h v1.20.x+x.x.x.el8 worker2.example.com Ready <none> 26h v1.20.x+x.x.x.el8 worker3.example.com Ready <none> 26h v1.20.x+x.x.x.el8

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

    • 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 \
    --master-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 master 26h v1.20.x+x.x.x.el8 control2.example.com Ready master 26h v1.20.x+x.x.x.el8 control3.example.com Ready master 26h v1.20.x+x.x.x.el8 control4.example.com Ready master 2m38s v1.20.x+x.x.x.el8 worker1.example.com Ready <none> 26h v1.20.x+x.x.x.el8 worker2.example.com Ready <none> 26h v1.20.x+x.x.x.el8 worker3.example.com Ready <none> 26h v1.20.x+x.x.x.el8 worker4.example.com Ready <none> 2m38s v1.20.x+x.x.x.el8 worker5.example.com Ready <none> 2m38s v1.20.x+x.x.x.el8

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

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

警告

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

Kubernetesクラスタをスケール・ダウンするには:
  1. Kubernetesクラスタのコントロール・プレーン・ノードからkubectl get nodesコマンドを使用して、クラスタのコントロール・プレーン・ノードとワーカー・ノードを確認します。

    kubectl get nodes
    NAME STATUS ROLE AGE VERSION control1.example.com Ready master 26h v1.20.x+x.x.x.el8 control2.example.com Ready master 26h v1.20.x+x.x.x.el8 control3.example.com Ready master 26h v1.20.x+x.x.x.el8 control4.example.com Ready master 2m38s v1.20.x+x.x.x.el8 worker1.example.com Ready <none> 26h v1.20.x+x.x.x.el8 worker2.example.com Ready <none> 26h v1.20.x+x.x.x.el8 worker3.example.com Ready <none> 26h v1.20.x+x.x.x.el8 worker4.example.com Ready <none> 2m38s v1.20.x+x.x.x.el8 worker5.example.com Ready <none> 2m38s v1.20.x+x.x.x.el8

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

    • 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モジュールから削除します。 ノードが--master-nodesまたは--worker-nodesオプションにリストされなくなり、クラスタから削除されます。 オペレータ・ノードで次のコマンドを実行します。

    olcnectl module update \
    --environment-name myenvironment \  
    --name mycluster \
    --master-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 master 26h v1.20.x+x.x.x.el8 control2.example.com Ready master 26h v1.20.x+x.x.x.el8 control3.example.com Ready master 26h v1.20.x+x.x.x.el8 worker1.example.com Ready <none> 26h v1.20.x+x.x.x.el8 worker2.example.com Ready <none> 26h v1.20.x+x.x.x.el8 worker3.example.com Ready <none> 26h v1.20.x+x.x.x.el8