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.21.27 --force-update - マスターの更新が終了するまで待ちます。
更新するワーカー・ノードを決定します
{: tag-red}[ メジャーアップデート]マイナーアップデート
-
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 のスケールダウン
{: tag-red}[ メジャーアップデート]マイナーアップデート
- 前のステップで確認したワーカー・ノードごとに、
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-storageoc scale deployment rook-ceph-osd-2 --replicas=0 -n openshift-storageoc scale deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME --replicas=0 -n openshift-storage
ワーカー・ノードを閉鎖およびドレーンします
{: tag-red}[ メジャーアップデート]マイナーアップデート
-
ノードを閉鎖します。 ノードを閉鎖すると、このノードでポッドがスケジュールされなくなります。
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" -
ドレーンが完了後、以下のステップを実行してワーカー・ノードを置き換えます。
ワーカー・ノードの更新
{: tag-red}[ メジャーアップデート]マイナーアップデート
-
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
古いノードからリソースをクリーンアップします
{: tag-red}[ メジャーアップデート]マイナーアップデート
-
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>
新規ストレージ・ノードの追加
{: tag-red}[ メジャーアップデート]マイナーアップデート
- 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 monrook-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-jobjob.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.0oc 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_OKoc 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