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 つのワーカー・ノードに対して以下のステップを実行することも計画してください。 更新するワーカー・ノードごとに上記の手順を繰り返します。
クラスター・マスターの更新
メジャー・アップデート
- ワーカー・ノードを新しいメジャー・バージョン (
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
- マスターの更新が終了するまで待ちます。
更新するワーカー・ノードを決定します
メジャー更新 マイナー更新
-
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 のスケールダウン
メジャー更新 マイナー更新
- 前のステップで確認したワーカー・ノードごとに、
rook-ceph-mon
デプロイメントとrook-ceph-osd
デプロイメントを見つけます。oc get pods -n openshift-storage -o wide | grep -i <node_name>
- 前のステップで確認したデプロイメントをスケールダウンします。
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
ワーカー・ノードを閉鎖およびドレーンします
メジャー更新 マイナー更新
-
ノードを閉鎖します。 ノードを閉鎖すると、このノードでポッドがスケジュールされなくなります。
oc adm cordon NODE_NAME
出力例
node/10.241.0.4 cordoned
-
ノードをドレーンして、すべてのポッドを削除します。 ワーカー・ノードをドレーンすると、ポッドは他のワーカー・ノードに移動するため、ダウン時間は発生しません。 また、ドレーンにより、ポッドの中断予算が中断されないようにすることもできます。
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"
-
ドレーンが完了後、以下のステップを実行してワーカー・ノードを置き換えます。
ワーカー・ノードの更新
メジャー更新 マイナー更新
-
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*
-
ワーカー・ノードを更新します。
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
-
代替ノードがプロビジョニングされるのを待って、ワーカーノードをリストアップします。 このプロセスには 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
古いノードからリソースをクリーンアップします
メジャー更新 マイナー更新
-
openshift-storage
プロジェクトにナビゲートします。oc project openshift-storage
-
障害のある 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
に変更する必要があります。 -
ocs-osd-removal-job ポッドの状況を調べて、OSD が正常に削除されたことを確認します。
oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
-
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
-
旧ノードからの Persistent Volume Claim (PVC) に関連付けられた永続ボリューム (PV) を識別します。
oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
「リリース済み」状態の PV がある場合は、削除します。
oc delete pv <persistent_volume>
新規ストレージ・ノードの追加
メジャー更新 マイナー更新
- OpenShift Data Foundation ポッドが新しいワーカーにデプロイされるまで待ちます。 OSD 永続ボリュームが作成されたこと、およびすべてのポッドが
Running
状態であることを確認します。oc get pv oc get ocscluster oc get pods -n openshift-storage
- その他の必要な 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
- 交換用ノードで新しい OSD ポッドが実行されていることを確認します。
oc get pods -o wide -n openshift-storage| egrep -i <new_node_name> | egrep osd
crashcollector
ポッドのデプロイメントを識別します。oc get deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME -n openshift-storage
- 既存の
crashcollector
デプロイメントがある場合は、それを削除します。oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME -n openshift-storage
- ocs-osd-removal-job を削除します。
出力例:oc delete -n openshift-storage job ocs-osd-removal-job
job.batch "ocs-osd-removal-job" deleted
OpenShift Data Foundation アドオンの更新
メジャー・アップデート
- 既存のバージョンを確認します。
ibmcloud oc cluster addon ls --cluster CLUSTER
- アドオンを更新します。
ibmcloud oc cluster addon update openshift-data-foundation --cluster CLUSTER --version VERSION
- アドオンが更新されていることを確認する。
ibmcloud oc cluster addon ls --cluster CLUSTER
クラスター・リソースの更新
メジャー・アップデート
-
ocscluster
リソースの名前を取得する。oc get ocscluster
出力例
NAME AGE ocscluster-vpc 19d
-
以下のコマンドを実行して、
ocscluster
リソースを編集します。oc edit ocscluster OCS-CLUSTER-NAME
-
ocsUpgrade
パラメータをtrue
に設定する。... spec: billingType: hourly monSize: 20Gi autoDiscoverDevices: true numOfOsd: 1 ocsUpgrade: true osdSize: 250Gi status: storageClusterStatus: Decreasing the capacity not allowed
-
ファイルを保存して閉じます。
-
アップデートが完了するまで待つ。
-
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