2.4. OpenShift Container Platform 4.18 から新しいバージョンへの更新の準備
OpenShift Container Platform 4.18 から新しいバージョンに更新する前に、Red Hat Enterprise Linux (RHEL)コンピュートマシンおよびゲートウェイ API ネットワークリソースに関する具体的な懸念点について確認してください。
2.4.1. パッケージベースの RHEL ワーカーノードからのワークロード移行 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 4.19 の導入に伴い、パッケージベースの RHEL ワーカーノードがサポートされなくなります。該当するノードが稼働している間にクラスターを更新しようとすると、更新が失敗します。
ノードセレクターを使用すると、RHEL コンピュートノードで実行中の Pod を、代わりに RHCOS ノードで実行するように再スケジュールできます。
たとえば、次の Node
オブジェクトには、オペレーティングシステム情報 (この場合は RHCOS) のラベルがあります。
RHCOS のラベルを含む Node
オブジェクトのサンプル
- 1
- ノードで実行されるオペレーティングシステムを識別し、Pod のノードセレクターに一致するラベル。
Pod を新しい RHCOS ノードにスケジュールするには、Pod の nodeSelector
フィールドに一致するラベルが含まれている必要があります。次の手順では、ラベルを追加する方法を説明します。
手順
次のコマンドを入力して、既存の Pod を現在実行している RHEL ノードをスケジューリング対象から除外します。
oc adm cordon <rhel-node>
$ oc adm cordon <rhel-node>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod に
rhcos
ノードセレクターを追加します。既存および将来の Pod にノードセレクターを追加するには、次のコマンドを入力して、Pod のコントローラーオブジェクトにノードセレクターを追加します。
rhcos
ラベルを含むDeployment
オブジェクトの例oc patch dc <my-app> -p '{"spec":{"template":{"spec":{"nodeSelector":{"node.openshift.io/os_id":"rhcos"}}}}}'
$ oc patch dc <my-app> -p '{"spec":{"template":{"spec":{"nodeSelector":{"node.openshift.io/os_id":"rhcos"}}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Deployment
制御オブジェクト配下にある既存の Pod が、RHCOS ノード上に再作成されます。特定の新しい Pod にノードセレクターを追加するには、セレクターを
Pod
オブジェクトに直接追加します。rhcos
ラベルを含むPod
オブジェクトの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod にも制御オブジェクトがある場合、新しい Pod は RHCOS ノードに作成されます。
2.4.2. RHEL ワーカーノードの特定と削除 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 4.19 の導入に伴い、パッケージベースの RHEL ワーカーノードがサポートされなくなります。次の手順では、ベアメタルインストール環境のクラスターを削除するために RHEL ノードを特定する方法を説明します。クラスターを正常に更新するには、次の手順を完了する必要があります。
手順
次のコマンドを入力して、クラスター内で RHEL を実行しているノードを特定します。
oc get -l node.openshift.io/os_id=rhel
$ oc get -l node.openshift.io/os_id=rhel
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS ROLES AGE VERSION rhel-node1.example.com Ready worker 7h v1.31.7 rhel-node2.example.com Ready worker 7h v1.31.7 rhel-node3.example.com Ready worker 7h v1.31.7
NAME STATUS ROLES AGE VERSION rhel-node1.example.com Ready worker 7h v1.31.7 rhel-node2.example.com Ready worker 7h v1.31.7 rhel-node3.example.com Ready worker 7h v1.31.7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノード削除プロセスに進みます。RHEL ノードは Machine API によって管理されず、コンピュートマシンセットが関連付けられていません。手動でクラスターからノードを削除する前に、ノードをスケジューリング対象から除外して drain (Pod の退避) を実行する必要があります。
このプロセスの詳細は、How to remove a worker node from Red Hat OpenShift Container Platform 4 UPI を参照してください。
2.4.3. 新しい RHCOS ワーカーノードのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
ワークロードに追加のコンピュートノードが必要な場合は、クラスターを更新する前または更新した後に新しいノードをプロビジョニングできます。詳細は、次の マシン管理 ドキュメントを参照してください。
installer-provisioned infrastructure インストールの場合、自動スケーリングによってデフォルトで RHCOS ノードが追加されます。ベアメタルプラットフォーム上の user-provisioned infrastructure インストールの場合、RHCOS コンピュートノードをクラスターに手動で追加 できます。
2.4.4. Ingress Operator による Gateway API 管理継承の準備 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 4.19 以降、Ingress Operator は Gateway API カスタムリソース定義 (CRD) のライフサイクルを管理します。この管理が存在しなかった OpenShift Container Platform 4.19 より前のバージョンから更新するには、Ingress Operator が必要とする特定の OpenShift Container Platform 仕様に準拠するように、クラスターにすでに存在する Gateway API CRD を置き換えるか、削除する必要があります。OpenShift Container Platform バージョン 4.19 には、ゲートウェイ API 標準バージョン 1.2.0 CRD が必要です。
Gateway API リソースを更新または削除すると、サービスまたはデータのダウンタイムや損失が発生する可能性があります。この手順を実行する前に、これによるクラスターへの影響を理解する必要があります。必要な場合は、後で復元するために、Gateway API オブジェクトを YAML 形式でバックアップします。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - クラスター管理者のアクセスを持つ OpenShift Container Platform アカウントを使用できる。
- オプション: 必要な Gateway API オブジェクトをバックアップしている。
手順
次のコマンドを実行して、削除する必要のあるすべての Gateway API CRD をリスト表示します。
oc get crd | grep "gateway.networking"
$ oc get crd | grep "gateway.networking"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、直前の手順の 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
$ 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Gateway API CRD のライフサイクルをこれまで管理していたコントローラーは、すべて適切に動作しなくなります。Ingress Operator と組み合わせて強制的に使用し、Gateway API CRD を管理しようとすると、クラスターの更新が成功しない可能性があります。
次のコマンドを実行して、サポートされている Gateway API CRD を取得します。
oc apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml
$ oc apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow