機械翻訳について

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

第4章 Oracle Linux 8へのアップグレード

この章では、Oracle Cloud Native EnvironmentのノードをOracle Linux 7からOracle Linux 8にアップグレードする方法について説明します。

重要

ノードをOracle Linux 8にアップグレードする場合は、最初にOracle Linux 7のOracle Cloud Native Environmentリリース1.4をインストールまたはアップグレードする必要があります。

Oracle Cloud Native Environmentノードでは、オペレーティング・システムをOracle Linux 7からOracle Linux 8にアップグレードすることはできません。 Oracle Linux 8を実行している一連の新しいノードを作成して、既存のOracle Linux 7ノードと置換するか、クラスタからノードを削除し、アップグレードして、クラスタに再度追加します。 どの方法を選択するかは、環境内のサーバー・リソースの数によって異なります。

アップグレード中は、Kubernetesクラスタに常に次のものが含まれるようにすることをお薦めします。

  • 少なくとも3つのコントロール・プレーン・ノード。 アップグレード中は、クラスタ内に5つ以上のコントロール・プレーン・ノードが含まれるようにすることをお薦めします。

  • 少なくとも3つのワーカー・ノード。

  • クラスタ内のワークロードには、ワーカー・ノードの1/3を削除できるだけの十分なリソースが必要です。 アップグレード中にアプリケーションの実行を継続できるだけの十分なリソースがクラスタにあることを確認してください。

アップグレードの実行に必要となるよりも長い時間、オペレーティング・システムが混在するクラスタを実行しないことをお薦めします。

クラスタをOracle Linux 7からOracle Linux 8にアップグレードする基本的なステップを次に示します。

  1. オペレータ・ノードをアップグレードします。

  2. 可能であれば、新しいOracle Linux 8ノードを準備します。 新しいノードを使用するためのサーバー・リソースがない場合は、クラスタから削除されたノードをアップグレードできます。

  3. クラスタで外部ロード・バランサを使用する場合は、そのロード・バランサに新しいノードを追加します。

  4. クラスタ内のノードを置換します。

4.1 オペレータ・ノードのアップグレード

この項では、オペレータ・ノードをOracle Linux 7からOracle Linux 8に移行する方法について説明します。

オペレータ・ノードをアップグレードするには:
  1. 新しいノードにOracle Linux 8をインストールし、オペレータ・ノードとして使用するように準備します。 オペレータ・ノードとして使用するようにノードを準備する方法の詳細は、スタート・ガイドを参照してください。

  2. Oracle Linux 7オペレータ・ノードの/var/olcneディレクトリから新しいOracle Linux 8ノードの同じロケーションに、Oracle Cloud Native Environmentデータをコピーします。 または、/var/olcneディレクトリに外部記憶域を使用している場合は、新しいノードに共有記憶域をマウントします。

  3. 新しいノードのX.509証明書を設定し、Platform API Serverサービスを起動します。

    • Vaultを使用してクラスタ内のノードを認証する場合は、Vaultトークンを使用してPlatform API Serverサービスを起動します。 Vaultトークンを使用したPlatform API Serverサービスの起動の詳細は、スタート・ガイドを参照してください。

    • CA証明書を使用してクラスタ内のノードを認証する場合は、証明書情報をノードにコピーし、証明書を使用してPlatform API Serverサービスを起動します。 CA証明書を使用したPlatform API Serverサービスの起動の詳細は、スタート・ガイドを参照してください。

    • 非公開CA証明書を使用してクラスタ内のノードを認証する場合は、Oracle Linux 7ノードから新しいOracle Linux 8ノードに、ノードの新しい証明書の生成に使用する秘密キーとCA証明書をコピーします。

      gen-certs-helper.shスクリプトを使用して証明書を生成すると、次のロケーションが考えられます:

      /etc/olcne/configs/certificates/production/ca.cert
      /etc/olcne/configs/certificates/production/ca.key

      新しいOracle Linux 8ノードで、コピーした証明書とキーを使用して新しいオペレータ・ノードの新しい証明書を生成し、新しい証明書情報をノード自体にコピーします。 証明書の生成およびノードへの転送の詳細は、スタート・ガイドを参照してください。

      非公開証明書を使用してPlatform API Serverサービスを起動します。 CA証明書を使用したPlatform API Serverの起動の詳細は、スタート・ガイドを参照してください。

  4. Platform API Serverを再起動します。

    sudo systemctl restart olcne-api-server.service

4.2 Oracle Linux 8ノードの準備

この項では、クラスタ内でKubernetesノードとして使用するためにOracle Linux 8ノードを準備する方法を示します。 ノードの準備が完了したら、クラスタにそのノードをスケーリングできます。

サーバー・リソースがある場合は、事前に新しいノードすべてを準備してクラスタに追加することも、Oracle Linux 7クラスタから削除したノードを準備することもできます。

Oracle Linux 8ノードを準備するには:
  1. Oracle Linux 8をノードにインストールし、Kubernetesノードとして使用するように準備します。 Kubernetesノードとして使用するようにノードを準備する方法の詳細は、スタート・ガイドを参照してください。

  2. 新しいノードのX.509証明書を設定し、Platform Agentサービスを起動します。

    • Vaultを使用してクラスタ内のノードを認証する場合は、Vaultトークンを使用してPlatform Agentサービスを起動します。 Vaultトークンを使用したPlatform Agentサービスの起動の詳細は、スタート・ガイドを参照してください。

    • CA証明書を使用してクラスタ内のノードを認証する場合は、証明書情報をノードにコピーし、証明書を使用してPlatform Agentサービスを起動します。 CA証明書を使用したPlatform Agentサービスの起動の詳細は、スタート・ガイドを参照してください。

    • 非公開CA証明書を使用してクラスタ内のノードを認証する場合は、新しい証明書を生成し、新しい証明書情報をノードにコピーします。 証明書の生成およびノードへの転送の詳細は、スタート・ガイドを参照してください。

      非公開証明書を使用してPlatform Agentサービスを起動します。 CA証明書を使用したPlatform Agentの起動の詳細は、スタート・ガイドを参照してください。

4.3 ロード・バランサへの新規ノードの追加

Kubernetesクラスタに外部ロード・バランサを使用している場合(Kubernetesモジュールの作成時に--load-balancerオプションで設定します)、新しいコントロール・プレーン・ノードをそのロード・バランサに追加します。 ノードを再利用して同じIPアドレスおよびホスト名を保持する場合は、ロード・バランサ(新しいノードのみ)に追加する必要はありません。 新しいワーカー・ノードを作成し、Istioモジュールがデプロイされている場合は、必要に応じてそれらのワーカー・ノードもロード・バランサに追加する必要があります。

Oracle Cloud Infrastructureロード・バランサを使用している場合は、適切なバックエンド・セットに新しいコントロール・プレーン・ノードを追加し、コントロール・プレーン・ノードのポートを6443に設定します。 ロード・バランサにIstioを使用している場合は、適切なバックエンド・セットに新しいワーカー・ノードも追加します。

Platform CLIによってデプロイされたロード・バランサを使用している場合は(Kubernetesモジュールの作成時に--virtual-ipオプションで設定します)、コントロール・プレーン・ノードをロード・バランサに追加する必要はありません。 これは、ノードをクラスタにスケーリングするときに自動的に行われます。

4.4 Kubernetesクラスタのアップグレード

この項では、Kubernetesクラスタ内のノードを置換して、Oracle Linux 7からOracle Linux 8にアップグレードする方法を示します。 この項の最初のオプションでは、5つのコントロール・プレーン・ノードと3つのワーカー・ノードという、推奨クラスタ・サイズを使用して、クラスタ内のオペレーティング・システムをアップグレードします。 この推奨クラスタ・サイズを使用していない場合は、クラスタ・タイプ別に代替オプションが用意されています。

4.4.1 ノードの置換

5つ以上のコントロール・プレーン・ノードと3つ以上のワーカー・ノードを持つクラスタを使用することをお薦めします。 この項では、最小ワーカー・ノードの要件が維持されるようにワーカー・ノードを1つ追加して、このシナリオでKubernetesクラスタ・ノードを置換する方法を示します。

この方法は、6つ以上のコントロール・プレーン・ノードと4つ以上のワーカー・ノードがある場合にも使用できます。

クラスタ内のコントロール・プレーン・ノードの数は、3、5、7など、3以上の奇数である必要があります。 クラスタ内には常に3つ以上のコントロール・プレーン・ノードが含まれるようにし、ノード数は5つ以上にすることが推奨されるため、これが最も一般的なアップグレード・シナリオになると考えられます。

5つのコントロール・プレーン・ノードのうち2つを削除してクラスタをスケール・ダウンしてから、それらを2つのOracle Linux 8ノードに置き換えることをお薦めします。 サーバー・リソースに応じて、事前に準備した新しいノードを使用することも、削除した2つのノードをアップグレードして、再度スケーリングすることもできます。

重要

Oracle Linux 8にアップグレードする必要があるノードが1つのみの場合でも、一度に2つのノードをスケール・ダウンしてスケール・アップすると、ネットワークの停止が発生した場合にクラスタのクォーラムが維持されます。

ノードで実行中のアプリケーションを他のノードに移行できるように、クラスタ内のワーカー・ノードは一度に1つずつ置換する必要があります。 クラスタ内のワーカー・ノードが4つ未満の場合は、クラスタ内のワーカー・ノードが3つ未満にならないようにするために、追加のリソースを見つけることを検討してください。 たとえば、追加のサーバーを一時的に導入して、アップグレード・プロセス中にワーカー・ノードの数を4つ以上に増やすことなどがあります。 そうしない場合、ワーカー・ノードで実行されているアプリケーションが期待どおりに動作しない可能性があります。

Kubernetesクラスタ・ノードを置換するには:
  1. コントロール・プレーン・ノードから、kubectl get nodesコマンドを使用して、クラスタ内のコントロール・プレーン・ノードおよびワーカー・ノードを表示します。 この例では、Oracle Linux 7を実行している5つのコントロール・プレーン・ノードと4つのワーカー・ノードがあります。

    kubectl get nodes
    NAME STATUS ROLE AGE VERSION control1.example.com Ready master 26h v1.21.x+x.x.x.el7 control2.example.com Ready master 26h v1.21.x+x.x.x.el7 control3.example.com Ready master 26h v1.21.x+x.x.x.el7 control4.example.com Ready master 26h v1.21.x+x.x.x.el7 control5.example.com Ready master 26h v1.21.x+x.x.x.el7 worker1.example.com Ready <none> 26h v1.21.x+x.x.x.el7 worker2.example.com Ready <none> 26h v1.21.x+x.x.x.el7 worker3.example.com Ready <none> 26h v1.21.x+x.x.x.el7 worker4.example.com Ready <none> 26h v1.21.x+x.x.x.el7

  2. オペレータ・ノードで、クラスタをスケール・ダウンして、2つのOracle Linux 7コントロール・プレーン・ノードを削除します。 この例では、control1.example.comノードおよびcontrol2.example.comノードを削除します。

    olcnectl module update \
    --environment-name myenvironment \  
    --name mycluster \
    --master-nodes control3.example.com:8090,control4.example.com:8090,control5.example.com:8090

    この時点でクラスタには、最小限必要なコントロール・プレーン・ノード数である、3つのノードがあります。

    新しいOracle Linux 8ノードを2つ割り当てるか、クラスタから削除された2つのノードをアップグレードします。 ノードの準備の詳細は、4.2項「Oracle Linux 8ノードの準備」を参照してください。

    クラスタをスケール・アップして、2つのOracle Linux 8コントロール・プレーン・ノードを追加します。 この例では、control1-ol8.example.comノードおよびcontrol2-ol8.example.comノードをコントロール・プレーン・ノードとして追加します。

    olcnectl module update \
    --environment-name myenvironment \  
    --name mycluster \
    --master-nodes control1-ol8.example.com:8090,control2-ol8.example.com:8090,control3.example.com:8090,control4.example.com:8090,control5.example.com:8090

    この時点でクラスタには、推奨されるコントロール・プレーン・ノード数である、5つのノードがあります。

    すべてのOracle Linux 7コントロール・プレーン・ノードがOracle Linux 8ノードに置き換えられるまで、このプロセスを繰り返します。

    クラスタには奇数のコントロール・プレーン・ノードがあるため、最終的に、アップグレードされていないノードが1つ残ります。 いずれかのノードがすでにOracle Linux 8にアップグレードされている場合でも、一度に2つのコントロール・プレーン・ノードをスケール・ダウンおよびスケール・アップする必要があります。 これにより、奇数のコントロール・プレーン・ノードが保持されます。

  3. クラスタ内のすべてのコントロール・プレーン・ノードをOracle Linux 8ノードに置き換えたら、ワーカー・ノードに対して同じ操作を実行できます。 ワーカー・ノードは一度に1つずつ置き換えます。

    クラスタをスケール・ダウンして、Oracle Linux 7ワーカー・ノードを1つ削除します。 この例では、worker1.example.comノードを削除します。

    olcnectl module update \
    --environment-name myenvironment \  
    --name mycluster \
    --worker-nodes worker2.example.com:8090,worker3.example.com:8090,worker4.example.com:8090

    クラスタには3つのワーカー・ノードが残っており、これが推奨される最小数です。

    新しいOracle Linux 8ノードを1つ割り当てるか、クラスタから削除されたノードをアップグレードします。

    クラスタをスケール・アップして、Oracle Linux 8ワーカー・ノードを追加します。 この例では、worker1-ol8.example.comノードをワーカー・ノードとして追加します。

    olcnectl module update \
    --environment-name myenvironment \  
    --name mycluster \
    --worker-nodes worker1-ol8.example.com:8090,worker2.example.com:8090,worker3.example.com:8090,worker4.example.com:8090

    すべてのOracle Linux 7ワーカー・ノードが新しいOracle Linux 8ノードに置き換えられるまで、このプロセスを繰り返します。

  4. コントロール・プレーン・ノードで、kubectl get nodesコマンドを使用して、クラスタに新しいOracle Linux 8コントロール・プレーン・ノードおよびワーカー・ノードが含まれ、すべてのOracle Linux 7ノードが削除されていることを確認します。 たとえば:

    kubectl get nodes
    NAME STATUS ROLE AGE VERSION control1-ol8.example.com Ready master 20m34s v1.21.x+x.x.x.el8 control2-ol8.example.com Ready master 18m12s v1.21.x+x.x.x.el8 control3-ol8.example.com Ready master 14m12s v1.21.x+x.x.x.el8 control4-ol8.example.com Ready master 14m12s v1.21.x+x.x.x.el8 control5-ol8.example.com Ready master 14m12s v1.21.x+x.x.x.el8 worker1-ol8.example.com Ready <none> 9m40s v1.21.x+x.x.x.el8 worker2-ol8.example.com Ready <none> 6m28s v1.21.x+x.x.x.el8 worker3-ol8.example.com Ready <none> 4m28s v1.21.x+x.x.x.el8 worker4-ol8.example.com Ready <none> 1m28s v1.21.x+x.x.x.el8

4.4.2 3つのコントロール・プレーン・ノード・クラスタのノードの置換

3つのコントロール・プレーン・ノードを持つクラスタがある場合は、アップグレード中に使用する新しいサーバーを使用して、追加で2つのOracle Linux 8コントロール・プレーン・ノードを作成する必要があります。 これら2つの新しいコントロール・プレーン・ノードをクラスタに追加してから、2つのOracle Linux 7コントロール・プレーン・ノードを削除して、クラスタをアップグレードします。 すべてのコントロール・プレーン・ノードが置換されるまで、これを繰り返します。 つまり、アップグレード中にクラスタ内に3つ以上のコントロール・プレーン・ノードを保持できます。

ヒント

一時コントロール・プレーン・ノードとして使用するサーバーがない場合は、ワーカー・ノードを使用できます。 クラスタをスケール・ダウンして2つのワーカー・ノードを削除し、それらをOracle Linux 8ノードとして準備して、クラスタをスケール・アップしてそれらのノードをコントロール・プレーン・ノードとして追加します。 アップグレードが完了したら、2つのコントロール・プレーン・ノードを削除し、それらをワーカー・ノードとしてクラスタに再度追加します。

このプロセスの基本的なステップ次に示します。 これらのステップの詳細は、4.4.1項「ノードの置換」を参照してください。

3つのコントロール・プレーン・ノードを持つクラスタをアップグレードするには:
  1. Oracle Linux 8ノードを2つ作成します。 これらのノードは、アップグレード中にクラスタのクォーラムを維持するために、一時コントロール・プレーン・ノードとして使用されます。

  2. クラスタをスケール・アップして、2つの新しいノードをコントロール・プレーン・ノードとして追加します。 この時点でクラスタには、5つのコントロール・プレーン・ノードがあります。

  3. クラスタをスケール・ダウンして、2つのOracle Linux 7コントロール・プレーン・ノードを削除します。 この時点でクラスタには、3つのコントロール・プレーン・ノードがあります。

  4. 削除したノードをOracle Linux 8にアップグレードし、新しいノードとして使用するように準備します。

  5. すべてのコントロール・プレーン・ノードがOracle Linux 8ノードに置き換えられるまで、スケール・アップとスケール・ダウンを繰り返します。

  6. クラスタをスケール・ダウンしてワーカー・ノードを削除し、アップグレードしてから、スケール・アップして再度クラスタに追加することで、ワーカー・ノードをアップグレードします。

4.4.3 単一コントロール・プレーン・ノード・クラスタのノードの置換

1つのコントロール・プレーン・ノードとロード・バランサを含むクラスタがある場合は、第4.4.2項、「の「3つのコントロール・プレーン・ノード・クラスタ内のノードの置換」の説明に従って同じ手順を使用します。 この状況では、2つのコントロール・プレーン・ノードを追加で作成する必要はありません。1つのコントロール・プレーン・ノードを追加するだけで十分です。 1つのコントロール・プレーン・ノードを持つクラスタはクラスタのクォーラムの要件を満たしていませんが、元のノードをアップグレードする際に、追加のコントロール・プレーン・ノードを1つ作成してクラスタに追加すれば、アップグレード中もクラスタは稼働したままになります。

1つのコントロール・プレーン・ノードを持つクラスタがあり、ロード・バランサを設定していない場合は、次のステップを実行します。 アップグレード時に、コントロール・プレーン・ノードの置換中は、クラスタはオフラインになります。

重要

アップグレード時には、クラスタの作成時に使用したものと同じIPアドレスとホスト名を、コントロール・プレーン・ノードに使用する必要があります。

ロード・バランサのない単一ノード・クラスタを移行するには:
  1. Platform API Serverもコントロール・プレーン・ノード上にある場合は、別のノードに移行する必要があります。 プラットフォームAPIサーバーの移行の詳細は、第4.1項、「の「オペレータ・ノードのアップグレード」を参照してください。

  2. オペレータ・ノードで、olcnectl module backupコマンドを使用してクラスタをバックアップします。 たとえば:

    olcnectl module backup \
    --environment-name myenvironment \
    --name mycluster
  3. コントロール・プレーン・ノードをOracle Linux 8にアップグレードします。 ノードの準備の詳細は、4.2項「Oracle Linux 8ノードの準備」を参照してください。

  4. オペレータ・ノードで、Platform API Serverを再起動します。

    sudo systemctl restart olcne-api-server.service
  5. olcnectl module validateコマンドを使用して、ノードが正しく設定されていることを確認します。 たとえば:

    olcnectl module validate \
    --environment-name myenvironment \
    --name mycluster
  6. olcnectl module restoreコマンドを使用して、クラスタをリストアします。 たとえば:

    olcnectl module restore \
    --environment-name myenvironment \
    --name mycluster
  7. コントロール・プレーン・ノードがOracle Linux 8ノードに置換されたら、ワーカー・ノードを置換できます。 ワーカー・ノードの置換の詳細は、4.4.1項「ノードの置換」を参照してください。