第2章 クラスターの更新の準備


2.1. OpenShift Container Platform 4.21 へのアップデート準備中

更新を正常に初期化するためにクラスター管理者が実行する必要がある管理タスクと、更新を確実に成功させるためのオプションのガイドラインを詳しく説明します。

2.1.1. Kubernetes API の削除

今回のリリースでは、Kubernetes API の削除はありません。

2.1.2. 条件付き更新のリスク評価

条件付き更新 は、使用可能な更新ターゲットですが、クラスターに適用される既知のリスクのため推奨されません。Cluster Version Operator (CVO) は、OpenShift Update Service (OSUS) に定期的にクエリーを実行して、更新の推奨事項に関する最新のデータを取得します。ターゲットとなりうる一部の更新には、それに関連するリスクが含まれる可能性があります。

CVO は条件付きリスクを評価します。そのリスクがクラスターに当てはまらない場合、クラスターはそのターゲットバージョンを推奨される更新パスとして使用できます。リスクが当てはまると判断された場合、または何らかの理由で CVO がリスクを評価できない場合、クラスターはその更新ターゲットを条件付き更新として使用できます。

ターゲットバージョンに更新しようとしているときに条件付き更新が発生した場合は、クラスターをそのバージョンに更新するリスクを評価する必要があります。一般的に、そのターゲットバージョンに更新する必要性が特にない場合は、推奨される更新パスが Red Hat から提供されるまで待つのが最善です。

ただし、そのバージョンに更新する明確な理由がある場合 (たとえば重要な CVE を修正する必要がある場合など)、CVE を修正する利点が、更新によってクラスターに問題が発生するリスクを上回る可能性があります。以下のタスクを実行して、Red Hat の更新リスク評価に同意するか判断してください。

  • 実稼働環境で問題なく更新を完了できると確信が持てるまで、非実稼働環境で幅広くテストしてください。
  • 条件付き更新の説明に記載されているリンクを使用してバグを調査し、使用しているクラスターに問題を引き起こす可能性があるか判断します。リスクを把握するためにサポートが必要な場合は、Red Hat サポートにお問い合わせください。

2.1.3. クラスター更新前の etcd バックアップ

etcd バックアップには、クラスターとそのすべてのリソースオブジェクトの状態が記録されます。現在機能不全状態にあるクラスターを復元できない障害シナリオでは、バックアップを使用してクラスターの状態の復元を試みることができます。

更新のコンテキストでは、更新によってクラスターの以前のバージョンに戻さないと修正できない壊滅的な状態が発生した場合に、クラスターの etcd 復元を試みることができます。etcd 復元は、実行中のクラスターにとって破壊的で不安定になる可能性があるため、最後の手段としてのみ使用してください。

警告

etcd 復元は重大な影響をもたらすため、ロールバックソリューションとして使用することは意図されていません。クラスターの以前のバージョンへのロールバックはサポートされていません。更新が完了しない場合は、Red Hat サポートにお問い合わせください。

etcd 復元の実行可能性に影響を与える要因がいくつかあります。詳細は、「etcd データのバックアップ」および「以前のクラスター状態への復元」を参照してください。

2.1.4. Ingress Operator による Gateway API 管理継承の準備

OpenShift Container Platform 4.19 以降、Ingress Operator は Gateway API カスタムリソース定義 (CRD) のライフサイクルを管理します。つまり、Gateway API でグループ化された API グループ内の CRD の作成、更新、および削除へのアクセスは拒否されます。

この管理が存在しなかった OpenShift Container Platform 4.19 より前のバージョンから更新するには、Ingress Operator が必要とする特定の OpenShift Container Platform 仕様に準拠するように、クラスターにすでに存在する Gateway API CRD を置き換えるか、削除する必要があります。OpenShift Container Platform バージョン 4.19 には、Gateway API 標準バージョン 1.2.1 CRD が必要です。

警告

Gateway API リソースを更新または削除すると、サービスまたはデータのダウンタイムや損失が発生する可能性があります。この手順を実行する前に、これによるクラスターへの影響を理解する必要があります。必要な場合は、後で復元するために、Gateway API オブジェクトを YAML 形式でバックアップします。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • クラスター管理者のアクセスを持つ OpenShift Container Platform アカウントを使用できる。
  • オプション: 必要な Gateway API オブジェクトをバックアップしている。

    警告

    バックアップおよび復元は、失敗するか、古い定義に存在したが新しい定義に存在しない CRD フィールドのデータが失われる可能性があります。

手順

  1. 次のコマンドを実行して、削除する必要のあるすべての Gateway API CRD をリスト表示します。

    $ oc get crd | grep -F -e gateway.networking.k8s.io -e gateway.networking.x-k8s.io

    出力例

    gatewayclasses.gateway.networking.k8s.io
    gateways.gateway.networking.k8s.io
    grpcroutes.gateway.networking.k8s.io
    httproutes.gateway.networking.k8s.io
    referencegrants.gateway.networking.k8s.io

  2. 以下のコマンドを実行して、直前の手順の Gateway API CRD を削除します。

    $ oc delete crd gatewayclasses.networking.k8s.io && \
    oc delete crd gateways.networking.k8s.io && \
    oc delete crd grpcroutes.gateway.networking.k8s.io && \
    oc delete crd httproutes.gateway.networking.k8s.io && \
    oc delete crd referencesgrants.gateway.networking.k8s.io
    重要

    CRD を削除すると、それらに依存するすべてのカスタムリソースが削除され、データが失われる可能性があります。Gateway API CRD を削除する前に、必要なデータのバックアップを作成します。Gateway API CRD のライフサイクルをこれまで管理していたコントローラーは、すべて適切に動作しなくなります。Ingress Operator と組み合わせて強制的に使用し、Gateway API CRD を管理しようとすると、クラスターの更新が成功しない可能性があります。

  3. 次のコマンドを実行して、サポートされている Gateway API CRD を取得します。

    $ oc apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.1/standard-install.yaml
    警告

    この手順は、CRD を削除せずに実行できます。CRD への更新により、カスタムリソースによって使用されるフィールドが削除されると、データが失われる可能性があります。フィールドを再追加するバージョンに CRD を再度更新すると、削除されたはずのデータが再び表示される可能性があります。OpenShift Container Platform 4.21 でサポートされていない特定の Gateway API CRD バージョンに依存するサードパーティー製コントローラーは、その CRD を Red Hat がサポートするバージョンに更新すると動作しなくなります。

    OpenShift Container Platform の実装および dead fields の問題の詳細は、OpenShift Container Platform の Gateway API 実装 を参照してください。

2.1.5. クラスター更新のベストプラクティス

OpenShift Container Platform は、更新中のワークロードの中断を最小限に抑える堅牢な更新エクスペリエンスを提供します。更新要求時にクラスターがアップグレード可能な状態にない限り、更新は開始されません。

この設計では、更新を開始する前にいくつかの重要な条件を強制しますが、クラスターの更新が成功する可能性を高めるために実行できるアクションは多数あります。

2.1.5.2. クラスター上ですべての重大アラートに対処する

重大なアラートには、常に可能な限り早く対処する必要がありますが、クラスターの更新を開始する前にこれらのアラートに対処し、問題を解決することが特に重要です。更新を開始する前に重大アラートに対処しなければ、クラスターが問題のある状態に陥る可能性があります。

Web コンソールの Administrator パースペクティブで、Observe Alerting に移動して重大なアラートを見つけます。

2.1.5.3. クラスターの状態が Upgradable であることを確認する

1 つ以上の Operator が 1 時間以上 Upgradeable 条件を True として報告しなかった場合、クラスター内で ClusterNotUpgradeable 警告アラートがトリガーされます。このアラートがパッチ更新をブロックすることはほぼありませんが、このアラートを解決し、すべての Operator が Upgradeable に対して True と報告するまで、マイナーバージョンの更新は実行できません。

Upgradeable 条件の詳細には、追加リソースセクションの「クラスター Operator の条件タイプ」を参照してください。

2.1.5.3.1. SDN サポートの削除

OpenShift SDN ネットワークプラグインは、バージョン 4.15 および 4.16 で非推奨になりました。このリリースでは、SDN ネットワークプラグインはサポートされなくなり、ドキュメントからコンテンツが削除されました。

OpenShift Container Platform クラスターが引き続き OpenShift SDN CNI を使用している場合は、OpenShift SDN ネットワークプラグインからの移行 を参照してください。

重要

クラスターが OpenShift SDN ネットワークプラグインを使用している場合、そのクラスターを OpenShift Container Platform 4.17 に更新することはできません。OpenShift Container Platform 4.17 にアップグレードする前に、OVN-Kubernetes プラグインに移行する必要があります。

2.1.5.4. 十分な予備ノードが利用可能であることを確認する

特にクラスターの更新を開始する場合は、予備のノード容量がほとんどない、またはまったくない状態でクラスターを実行するべきではありません。ノードが実行されておらず、使用できない場合、クラスターのワークロードの中断を最小限に抑えつつ更新を実行するという能力が制限される可能性があります。

クラスターの maxUnavailable 仕様の設定値によっては、使用できないノードがある場合にクラスターはマシン設定の変更をノードに適用できない可能性があります。さらに、コンピュートノードに十分な予備容量がない場合、最初のノードが更新のためにオフラインになっている間、ワークロードを一時的に別のノードに移行できない可能性があります。

ノード更新が成功する可能性を高めるために、各ワーカープールに十分な使用可能なノードがあること、およびコンピュートノードに十分な予備容量があることを確認してください。

警告

OpenShift Container Platform のすべてのマシン設定プールにおける maxUnavailable のデフォルト設定は 1 です。この値を変更せず、一度に 1 つのコントロールプレーンノードを更新することを推奨します。コントロールプレーンプールのこの値を 3 に変更しないでください。

2.1.5.5. クラスターの PodDisruptionBudget が適切に設定されていることを確認する

PodDisruptionBudget オブジェクトを使用して、常に使用可能でなければならない Pod レプリカの最小数または割合を定義できます。この設定により、クラスター更新などのメンテナンスタスク中にワークロードが中断されないように保護できます。

ただし、クラスターの更新中にノードがドレインおよび更新されないように、特定のトポロジーに対して PodDisruptionBudget を設定できます。

クラスターの更新を計画する際には、次の要因に対する PodDisruptionBudget オブジェクトの設定を確認してください。

  • 高可用性ワークロードの場合は、PodDisruptionBudget で禁止されることなく一時的にオフラインにできるレプリカがあることを確認してください。
  • 高可用性以外のワークロードの場合は、PodDisruptionBudget で保護されていないこと、または最終的にこれらのワークロードをドレインするための代替メカニズム (定期的な再起動や最終的な終了の保証など) があることを確認してください。

2.1.6. ワーカーノードのデプロイメント時間を最小限に抑える

クラスターワーカーノードのインストール時に、設定変更をノード全体に同時に適用することで、デプロイ時間を最小限に抑えることができます。

前提条件

  • 必要なインストール方法に対応した設定ファイル (install-config.yaml など) にアクセスできます。
  • OpenShift CLI (oc) がインストールされている。
  • OpenShift インストールプログラム (openshift-install) がインストールされています。
  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • クラスター内に複数のワーカーマシン設定プール (MCP) を作成します。

手順

  1. 使用するカスタムワーカー MCP ごとに、次の例のように MCP YAML ファイルを作成します。

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfigPool
    metadata:
      name: worker-0
      labels:
        machineconfiguration.openshift.io/role: worker-0
    spec:
      machineConfigSelector:
        matchExpressions:
          - key: machineconfiguration.openshift.io/role
            operator: In
            values: [ worker, worker-0 ]
      paused: false
      maxUnavailable: 100%
      nodeSelector:
        matchLabels:
          node-role.kubernetes.io/worker-0: ""

    以下の設定がされていることを確認してください。

    • maxUnavailable: この値を 100% に設定します。この設定により、この特定の MCP 内のすべてのノードが初期デプロイメント時に同時に更新されることが保証されます。デフォルトでは、maxUnavailable は 1 に設定されており、初期デプロイメント時にこの特定の MCP 内のすべてのノードが順次更新されます。
    • nodeSelector: node-role.kubernetes.io/worker-0 のような一意のラベルを定義して、特定のノードをこのプールにバインドします。
    • paused: インストール後に PerformanceProfile などの追加の Day 2 設定を適用する予定がある場合は、この値を true に設定してください。MCP が一時停止している間でも、Day 2 のすべての設定を適用できます。それらはキューに追加され、ノードの一時停止を解除したときに適用されます。追加の設定が不要な場合は、この値を false に設定してください。

      注記

      ベアメタルサーバーの場合、再起動には数分かかる場合があります。

  2. YAML ファイルをインストールプログラムによって生成されたディレクトリーに配置してください。プロビジョニングフェーズ中、または参加直後に、ワーカーノードに node-role.kubernetes.io/worker-0 のような正しいラベルが割り当てられていることを確認してください。

    注記

    適切なラベル付けを行うことで、ノードがデフォルトのワーカープールではなく、正しいカスタム MCP に割り当てられることが保証されます。

  3. オプション: 追加の設定を適用するために paused パラメーターを true に設定する場合は、以下の手順を実行してください。

    1. Day 2 の設定を適用してください。
    2. MCP の一時停止を解除して設定フェーズを開始し、必要に応じて再起動してください。API にアクセスして oc コマンドを実行するには、クラスターをデプロイする必要があります。

      $ oc patch mcp/worker-0 --patch '{"spec":{"paused":false}}' --type=merge

      出力例

      machineconfigpool.machineconfiguration.openshift.io/worker-0 patched

      注記

      paused パラメーターを true に設定しなかった場合、設定は順次適用され、必要に応じて再起動されます。

  4. MCP が正常に更新されたことを確認してください。

    $ oc get machineconfigpools

    出力例

    NAME       CONFIG                                           UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
    master     rendered-master-b0bb90c4921860f2a5d8a2f8137c1867 True      False      False      3              3                   3                     0                      97m
    worker-0   rendered-worker-config-new                       False     True       False      10             0                   0                     0                      5m

  5. すべての MCP が UPDATED=true に設定されている場合、ワークロード要件に基づいて適切な maxUnavailable で MCP を更新します。これにより、ユーザーがワークロードをクラスターにデプロイする際のクラスターの安定性と高可用性が確保されます。たとえば、以下のコマンドを実行して maxUnavailable を 1 に設定します。

    $ oc patch mcp/worker-0 --patch '{"spec":{"maxUnavailable":1}}' --type=merge

    出力例

    machineconfigpool.machineconfiguration.openshift.io/worker-0 patched

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る