IBM Cloud Docs
OpenShift Data Foundation を使用する Classic ワーカーノードの更新

OpenShift Data Foundation を使用する Classic ワーカーノードの更新

クラシック・インフラストラクチャー

OpenShift Data Foundationなどのストレージ・ソリューションを使用したClassicクラスタの場合、各ワーカー・ノードのコード化、排水、交換を順次行う必要があります。 OpenShift Data Foundation をクラスター内のワーカー・ノードのサブセットにデプロイした場合は、ワーカー・ノードを置き換えた後に、ocscluster リソースを編集して新しいワーカー・ノードを含める必要があります。

以下のチュートリアルでは、ワーカー・ノードのメジャー更新とマイナー更新の両方について説明します。

メジャー・アップデート
このラベルが付いたステップを実行して、メジャー・アップデートを適用します。例えば、ワーカー・ノードを新しいメジャー・バージョン ( 4.11 から 4.12 へ、 OpenShift Data Foundation を 4.11 から 4.12 へなど) に更新する場合などです。
マイナー更新
このラベルのステップを実行して、パッチ更新を適用します。例えば、 OpenShift Data Foundation をバージョン 4.12 のままにして、 4.12.15_1542_openshift から 4.12.16_1544_openshift に更新する場合などです。

4.8 から 4.12 へのアップグレードなど、アップグレード中にバージョンをスキップすることはサポートされていません。

アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。

ワーカー・ノードを更新する前に、必ずアプリ・データをバックアップしてください。 また、一度に 1 つのワーカー・ノードに対して以下のステップを実行することも計画してください。 更新するワーカー・ノードごとに上記の手順を繰り返します。

クラスター・マスターの更新

メジャー・アップデート

  1. ワーカー・ノードを新しいメジャー・バージョン ( 4.11 から 4.12 など) に更新する場合は、まずクラスター・マスターを更新します。
    ibmcloud oc cluster master update --cluster CLUSTER [--version MAJOR.MINOR.PATCH] [--force-update] [-f] [-q]
    
    コマンド例:
    ibmcloud oc cluster master update --cluster mycluster --version 4.17.28 --force-update
    
  2. マスターの更新が終了するまで待ちます。

更新するワーカー・ノードを決定します

メジャー更新 マイナー更新

  1. oc get nodes コマンドを使用し、更新するワーカー・ノードを決定して、ワーカー・ノードをリストします。

    oc get nodes
    

    出力例

    NAME           STATUS   ROLES           AGE    VERSION
    10.241.0.4     Ready    master,worker   106s   v1.21.6+4b61f94
    10.241.128.4   Ready    master,worker   22d    v1.21.6+bb8d50a
    10.241.64.4    Ready    master,worker   22d    v1.21.6+bb8d50a
    

OpenShift Data Foundation のスケールダウン

メジャー更新 マイナー更新

  1. 前のステップで確認したワーカー・ノードごとに、 rook-ceph-mon デプロイメントと rook-ceph-osd デプロイメントを見つけます。
    oc get pods -n openshift-storage -o wide | grep -i <node_name>
    
  2. 前のステップで確認したデプロイメントをスケールダウンします。
    oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
    
    oc scale deployment rook-ceph-osd-2 --replicas=0 -n openshift-storage
    
    oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME --replicas=0 -n openshift-storage
    

ワーカー・ノードを閉鎖およびドレーンします

メジャー更新 マイナー更新

  1. ノードを閉鎖します。 ノードを閉鎖すると、このノードでポッドがスケジュールされなくなります。

    oc adm cordon NODE_NAME
    

    出力例

    node/10.241.0.4 cordoned
    
  2. ノードをドレーンして、すべてのポッドを削除します。 ワーカー・ノードをドレーンすると、ポッドは他のワーカー・ノードに移動するため、ダウン時間は発生しません。 また、ドレーンにより、ポッドの中断予算が中断されないようにすることもできます。

    oc adm drain NODE_NAME --force --delete-emptydir-data --ignore-daemonsets
    

    出力例

    evicting pod "managed-storage-validation-webhooks-7fd79bc9f7-pdpv6"
    evicting pod "calico-kube-controllers-647dbbd685-fmrp9"
    evicting pod "certified-operators-2v852"
    evicting pod "csi-snapshot-controller-77fbf474df-47ddt"
    evicting pod "calico-typha-8574d89b8c-7f2cc"
    evicting pod "dns-operator-6d48cbff67-vrrsw"
    evicting pod "router-default-6fc798b98b-9m6kh"
    evicting pod "prometheus-adapter-5b77ffdd5f-hzqrp"
    evicting pod "alertmanager-main-1"
    evicting pod "prometheus-k8s-0"
    evicting pod "network-check-source-66c7fbb86-2r78z"
    
  3. ドレーンが完了後、以下のステップを実行してワーカー・ノードを置き換えます。

ワーカー・ノードの更新

メジャー更新 マイナー更新

  1. ibmcloud oc worker ls を使用してワーカー・ノードをリストし、前のステップで閉鎖してドレーンしたワーカー・ノードを見つけます。

    ibmcloud oc worker ls -c CLUSTER
    

    出力例

    ID                                                 Primary IP     Flavor     State    Status   Zone        Version   
    kube-c85ra07w091uv4nid9ug-vpcoc-default-000001c1   10.241.128.4   bx2.4x16   normal   Ready    us-east-3   4.8.29_1544_openshift*   
    kube-c85ra07w091uv4nid9ug-vpcoc-default-00000288   10.241.0.4     bx2.4x16   normal   Ready    us-east-1   4.8.29_1544_openshift*   
    kube-c85ra07w091uv4nid9ug-vpcoc-default-00000352   10.241.64.4    bx2.4x16   normal   Ready    us-east-2   4.8.29_1544_openshift*
    
  2. ワーカー・ノードを更新します。

    ibmcloud oc worker update -c CLUSTER --worker kube-***
    

    出力例

    The replacement worker node is created in the same zone with the same flavor, but gets new public or private IP addresses. During the replacement, all pods might be rescheduled onto other worker nodes and data is deleted if not stored outside the pod. To avoid downtime, ensure that you have enough worker nodes to handle your workload while the selected worker nodes are being replaced.
    Replace worker node kube-c85ra07w091uv4nid9ug-cluster-default-00000288? [y/N]> y
    Deleting worker node kube-c85ra07w091uv4nid9ug-cluster-default-00000288 and creating a new worker node in cluster
    
  3. 代替ノードがプロビジョニングされるのを待って、ワーカーノードをリストアップします。 このプロセスには 20 分以上かかる場合があることに留意してください。

    oc get nodes
    

    出力例

    NAME           STATUS   ROLES           AGE   VERSION
    10.241.0.4     Ready    master,worker   22d   v1.21.6+bb8d50a
    10.241.128.4   Ready    master,worker   22d   v1.21.6+bb8d50a
    10.241.64.4    Ready    master,worker   22d   v1.21.6+bb8d50a
    

古いノードからリソースをクリーンアップします

メジャー更新 マイナー更新

  1. openshift-storage プロジェクトにナビゲートします。

    oc project openshift-storage
    
  2. 障害のある OSD をクラスターから除去します。 必要に応じて、複数の失敗した OSD を指定できます。

    oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
    

    FAILED_osd_id 値は、 rook-ceph-osd 接頭部の直後のポッド名の整数です。 OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つすべてのレプリカをリストアするための十分なスペースがないクラスターでは、 FORCE_OSD_REMOVAL 値を true に変更する必要があります。

  3. ocs-osd-removal-job ポッドの状況を調べて、OSD が正常に削除されたことを確認します。

    oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    
  4. OSD の除去が完了したことを確認します。

    oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
    

    出力例

    2023-03-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    
  5. 旧ノードからの Persistent Volume Claim (PVC) に関連付けられた永続ボリューム (PV) を識別します。

    oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
    

    「リリース済み」状態の PV がある場合は、削除します。

    oc delete pv <persistent_volume>
    

新規ストレージ・ノードの追加

メジャー更新 マイナー更新

  1. OpenShift Data Foundation ポッドが新しいワーカーにデプロイされるまで待ちます。 OSD 永続ボリュームが作成されたこと、およびすべてのポッドが Running 状態であることを確認します。
    oc get pv
    oc get ocscluster
    oc get pods -n openshift-storage
    
  2. その他の必要な OpenShift Data Foundation ポッドがすべて「実行中」状態であることを確認します。
    oc get pod -n openshift-storage | grep mon
    
    出力例:
    rook-ceph-mon-a-cd575c89b-b6k66         2/2     Running
    0          38m
    rook-ceph-mon-b-6776bc469b-tzzt8        2/2     Running
    0          38m
    rook-ceph-mon-d-5ff5d488b5-7v8xh        2/2     Running
    0          4m8s
    
  3. 交換用ノードで新しい OSD ポッドが実行されていることを確認します。
    oc get pods -o wide -n openshift-storage| egrep -i <new_node_name> | egrep osd
    
  4. crashcollector ポッドのデプロイメントを識別します。
    oc get deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME -n openshift-storage
    
  5. 既存の crashcollector デプロイメントがある場合は、それを削除します。
    oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME -n openshift-storage
    
  6. ocs-osd-removal-job を削除します。
    oc delete -n openshift-storage job ocs-osd-removal-job
    
    出力例:
    job.batch "ocs-osd-removal-job" deleted
    

OpenShift Data Foundation アドオンの更新

メジャー・アップデート

  1. 既存のバージョンを確認します。
    ibmcloud oc cluster addon ls --cluster CLUSTER
    
  2. アドオンを更新します。
    ibmcloud oc cluster addon update openshift-data-foundation --cluster CLUSTER --version VERSION
    
  3. アドオンが更新されていることを確認する。
    ibmcloud oc cluster addon ls --cluster CLUSTER
    

クラスター・リソースの更新

メジャー・アップデート

  1. ocscluster リソースの名前を取得する。

    oc get ocscluster
    

    出力例

    NAME             AGE
    ocscluster-vpc   19d
    
  2. 以下のコマンドを実行して、 ocscluster リソースを編集します。

    oc edit ocscluster OCS-CLUSTER-NAME
    
  3. ocsUpgrade パラメータを true に設定する。

    ...
    spec:
        billingType: hourly
    monSize: 20Gi
    autoDiscoverDevices: true
    numOfOsd: 1
    ocsUpgrade: true
    osdSize: 250Gi
    status:
        storageClusterStatus: Decreasing the capacity not allowed
    
  4. ファイルを保存して閉じます。

  5. アップデートが完了するまで待つ。

  6. storagecluster リソースと cephcluster リソースの両方が正しくデプロイされていることを確認します。

    oc get storagecluster -n openshift-storage
    NAME                 AGE   PHASE   EXTERNAL   CREATED AT             VERSION
    ocs-storagecluster   43h   Ready              2023-06-21T09:22:00Z   4.11.0
    
    oc get cephcluster -n openshift-storage
    NAME                             DATADIRHOSTPATH   MONCOUNT   AGE   PHASE   MESSAGE                        HEALTH      EXTERNAL
    ocs-storagecluster-cephcluster   /var/lib/rook     3          43h   Ready   Cluster created successfully   HEALTH_OK   
    
    oc get csv -n openshift-storage
    NAME                              DISPLAY                       VERSION   REPLACES                          PHASE
    mcg-operator.v4.11.8              NooBaa Operator               4.11.8    mcg-operator.v4.11.7              Succeeded
    ocs-operator.v4.11.8              OpenShift Container Storage   4.11.8    ocs-operator.v4.11.7              Succeeded
    odf-csi-addons-operator.v4.11.8   CSI Addons                    4.11.8    odf-csi-addons-operator.v4.11.7   Succeeded
    odf-operator.v4.11.8              OpenShift Data Foundation     4.11.8    odf-operator.v4.11.7              Succeeded