Satellite ワーカーノードの RHCOS への移行

Satellite

Satellite のワーカーノードをRHCOSに移行するには、以下の手順を実行してください。

RHCOSに移行するには、新しいワーカープールをプロビジョニングしてから、以前のRHELワーカープールを削除する必要があります。 新しいワーカープールは、前のワーカープールと同じゾーンに存在しなければならない。

ステップ 1: クラスタ・マスターのアップグレード

マスターを更新するには、次のコマンドを実行してください。

ibmcloud ks cluster master update --cluster CLUSTERNAMEORID --version 4.18_openshift

ステップ2:新しいRHCOSワーカープールの作成

  • 新しいプールの --operating-system として RHCOS を必ず指定すること。
  • --size-per-zone オプションで指定したノードの数が、RHEL ワーカー プールのゾーンごとのワーカー数と一致していることを確認する。 ワーカー・プールのゾーンと、ゾーンごとのワーカー数をリストアップするには、 ibmcloud oc worker-pool get --worker-pool WORKER_POOL --cluster CLUSTER を実行する。
  • Cloud Pak の権利がある場合は、 --entitlement ocp_entitled オプションを必ず含めること。
  1. ibmcloud oc worker-pool create コマンドを実行して、新しいワーカープールを作成する。

    RHCOSワーカープールを作成するコマンド例。 Satellite クラスタの場合、ワーカープールを作成する前に、まず ロケーションにホストをアタッチする 必要があることに注意してください。

    ibmcloud oc worker-pool create satellite --cluster CLUSTER --host-label "os=RHCOS" --name NAME --size-per-zone SIZE --operating-system RHCOS --zone ZONE [--label LABEL]
    
  2. ワーカー・プールが作成されていることを確認し、ワーカー・プールIDをメモする。

    ibmcloud oc worker-pool ls --cluster CLUSTER_NAME_OR_ID
    

    出力例

    Name            ID                              Flavor                 OS              Workers
    my_workerpool   aaaaa1a11a1aa1aaaaa111aa11      b3c.4x16.encrypted     REDHAT_8_64    0
    
  3. ワーカープールに1つ以上のゾーンを追加します。 ゾーンを追加すると、 --size-per-zone オプションで指定した数のワーカーノードがゾーンに追加される。 これらのワーカーノードはRHCOSオペレーティングシステムを実行する。 RHCOSワーカープールに追加するゾーンは、置き換えるRHELワーカープールに追加するゾーンと一致させることを推奨します。 ワーカープールに接続されたゾーンを表示するには、 ibmcloud oc worker-pool zones --worker-pool WORKER_POOL --cluster CLUSTER を実行します。 RHELワーカープールのゾーンと一致しないゾーンを追加する場合、ワークロードを新しいゾーンに移動しても影響がないことを確認してください。 ファイルやブロックストレージはゾーンをまたいでサポートされていないことに注意。

ステップ3:RHCOSワーカープールにワーカーノードを追加する

VPCクラスタのワーカープールにゾーンを追加する 」を参照してください。

ステップ4:ワークロードの移行

OpenShift Data Foundation や Portworx のようなソフトウェア定義ストレージ(SDS)ソリューションを使用している場合は、RHEL ワーカーノードを削除する前に、新しいワーカーノードを含むようにストレージ構成を更新し、ワークロードを検証してください。

ワークロードの再スケジューリングの詳細については、 Kubernetes ドキュメントの Safely Drain a Node または Red Hat OpenShift ドキュメントの Understanding how to evacuate pods on nodes を参照してください。

  • ノードをコード化し、個々のポッドを削除することで、ポッドごとに移行する。

    oc adm cordon no/<nodeName>
    oc delete po -n <namespace> <podName>
    
  • Node、ノードの水抜きによって移動する。 詳細については、 ノードの安全な排出を参照してください。

  • RHELワーカープール全体を削除して、ワーカープール単位で移行する。

    ibmcloud ks worker-pool rm --cluster CLUSTER_NAME_OR_ID --worker-pool WORKER_POOL_NAME_OR_ID
    

ステップ 5: RHEL ワーカーノードの削除

RHELワーカーを含むワーカープールを削除する。

RHELワーカープールをスケールダウンし、削除する前に数日間保持することを検討してください。 こうすることで、移行プロセス中にワークロードが中断された場合でも、ワーカープールを簡単にスケールアップすることができます。 ワークロードが安定し、正常に機能することが確認できたら、RHEL ワーカープールを安全に削除できます。

  1. ワーカープールを一覧表示し、削除したいワーカープールの名前をメモしてください。
    ibmcloud oc worker-pool ls --cluster CLUSTER
    
  2. ワーカープールを削除するコマンドを実行する。
    ibmcloud oc worker-pool rm --worker-pool WORKER_POOL --cluster CLUSTER
    

オプショナルステップ5: Object Storage プラグインをアンインストールし、再インストールする

クラスタでCOSプラグインを使用している場合、RHELからRHCOSに移行した後、2つのオペレーティングシステム間で kube-driver パスが異なるため、アンインストールして再インストールする必要があります。 これを行わないと、 Error: failed to mkdir /usr/libexec/kubernetes: mkdir /usr/libexec/kubernetes: read-only file system のようなエラーが表示されることがある。