6.6. BMC 認証情報のない失敗したベアメタルコントロールプレーンノードの交換
ベアメタルクラスター上のコントロールプレーンノードに障害が発生し、復元できない場合、ベースボード管理コントローラー(BMC)認証情報を提供せずにクラスターをインストールした場合は、障害が発生したノードを新しいノードに置き換えるために追加の手順を実行する必要があります。
6.6.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 正常でないベアメタル etcd メンバーを特定している。
- マシンが実行されていないか、ノードが準備状態にないことを確認している。
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - 問題が発生した場合には、etcd バックアップ を作成している。
-
coreos-installerCLI をダウンロードし、インストールしている。 クラスターにはコントロールプレーン
マシンセットがありません。次のコマンドを実行して、machineset を確認できます。oc get machinesets,controlplanemachinesets -n openshift-machine-api
$ oc get machinesets,controlplanemachinesets -n openshift-machine-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ワーカー用に 1 つ以上の
マシンセットのみが必要です。コントロールプレーンのコントロールプレーンマシンセットが存在する場合は、この手順を使用しないでください。
6.6.2. 正常でない etcd メンバーの削除 リンクのコピーリンクがクリップボードにコピーされました!
正常でない etcd メンバーを削除して、失敗したコントロールプレーンノードの削除を開始します。
手順
以下のコマンドを実行して etcd Pod を一覧表示し、影響を受けるノード上にない Pod をメモします。
oc -n openshift-etcd get pods -l k8s-app=etcd -o wide
$ oc -n openshift-etcd get pods -l k8s-app=etcd -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
etcd-openshift-control-plane-0 5/5 Running 11 3h56m 192.168.10.9 openshift-control-plane-0 <none> <none> etcd-openshift-control-plane-1 5/5 Running 0 3h54m 192.168.10.10 openshift-control-plane-1 <none> <none> etcd-openshift-control-plane-2 5/5 Running 0 3h58m 192.168.10.11 openshift-control-plane-2 <none> <none>
etcd-openshift-control-plane-0 5/5 Running 11 3h56m 192.168.10.9 openshift-control-plane-0 <none> <none> etcd-openshift-control-plane-1 5/5 Running 0 3h54m 192.168.10.10 openshift-control-plane-1 <none> <none> etcd-openshift-control-plane-2 5/5 Running 0 3h58m 192.168.10.11 openshift-control-plane-2 <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、実行中の etcd コンテナーに接続します。
oc rsh -n openshift-etcd <etcd_pod>
$ oc rsh -n openshift-etcd <etcd_pod>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;etcd_pod> を正常なノードの 1 つに関連付けられた etcd Pod の名前に置き換えます。コマンドの例
oc rsh -n openshift-etcd etcd-openshift-control-plane-0
$ oc rsh -n openshift-etcd etcd-openshift-control-plane-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して etcd メンバー一覧を表示します。これらの値は後で必要になるため、ID および正常でない etcd メンバーの名前を書き留めておきます。
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要etcdctl endpoint healthコマンドは、置き換えが完了し、新規メンバーが追加されるまで、削除されたメンバーを一覧表示します。次のコマンドを実行して、正常でない etcd メンバーを削除します。
etcdctl member remove <unhealthy_member_id>
sh-4.2# etcdctl member remove <unhealthy_member_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow &
lt;unhealthy_member_id> を正常でないノードの etcd メンバーの ID に置き換えます。コマンドの例
etcdctl member remove 6fc1e7c9db35841d
sh-4.2# etcdctl member remove 6fc1e7c9db35841dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Member 6fc1e7c9db35841d removed from cluster b23536c33f2cdd1b
Member 6fc1e7c9db35841d removed from cluster b23536c33f2cdd1bCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してメンバーリストを再度表示し、メンバーが削除されたことを確認します。
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要メンバーを削除した後、残りの etcd インスタンスが再起動している間、クラスターに短時間アクセスできない場合があります。
次のコマンドを実行して、rsh セッションを etcd Pod を終了します。
exit
sh-4.2# exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、etcd クォーラムガードをオフにします。
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドにより、シークレットを正常に再作成し、静的 Pod をロールアウトできるようになります。
次のコマンドを実行して、削除された正常でない etcd メンバーのシークレットを一覧表示します。
oc get secrets -n openshift-etcd | grep <node_name>
$ oc get secrets -n openshift-etcd | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;node_name>を、etcd メンバーが削除した障害のあるノードの名前に置き換えます。コマンドの例
oc get secrets -n openshift-etcd | grep openshift-control-plane-2
$ oc get secrets -n openshift-etcd | grep openshift-control-plane-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
etcd-peer-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-metrics-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-openshift-control-plane-2 kubernetes.io/tls 2 134m
etcd-peer-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-metrics-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-openshift-control-plane-2 kubernetes.io/tls 2 134mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 削除された影響を受けるノードに関連付けられたシークレットを削除します。
次のコマンドを実行して、ピアシークレットを削除します。
oc delete secret -n openshift-etcd etcd-peer-<node_name>
$ oc delete secret -n openshift-etcd etcd-peer-<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;node_name>を影響を受けるノードの名前に置き換えます。次のコマンドを実行して、サービングシークレットを削除します。
oc delete secret -n openshift-etcd etcd-serving-<node_name>
$ oc delete secret -n openshift-etcd etcd-serving-<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;node_name>を影響を受けるノードの名前に置き換えます。次のコマンドを実行して、メトリクスシークレットを削除します。
oc delete secret -n openshift-etcd etcd-serving-metrics-<node_name>
$ oc delete secret -n openshift-etcd etcd-serving-metrics-<node_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;node_name>を影響を受けるノードの名前に置き換えます。
6.6.3. 正常でない etcd メンバーのマシンの削除 リンクのコピーリンクがクリップボードにコピーされました!
正常でない etcd メンバーのマシンを削除して、失敗したコントロールプレーンノードの削除を終了します。
手順
以下のコマンドを実行して、Bare Metal Operator が利用可能であることを確認します。
oc get clusteroperator baremetal
$ oc get clusteroperator baremetalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.20.0 True False False 3d15h
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.20.0 True False False 3d15hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、影響を受けるノードの
BareMetalHostオブジェクトをファイルに保存します。oc get -n openshift-machine-api bmh <node_name> -o yaml > bmh_affected.yaml
$ oc get -n openshift-machine-api bmh <node_name> -o yaml > bmh_affected.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow <
;node_name>を影響を受けるノードの名前に置き換えます。これは通常、関連するBareMetalHost名と一致します。次のコマンドを実行して、保存された
BareMetalHostオブジェクトの YAML ファイルを表示し、コンテンツが正しいことを確認します。cat bmh_affected.yaml
$ cat bmh_affected.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、影響を受ける
BareMetalHostオブジェクトを削除します。oc delete -n openshift-machine-api bmh <node_name>
$ oc delete -n openshift-machine-api bmh <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;node_name>を影響を受けるノードの名前に置き換えます。以下のコマンドを実行してすべてのマシンを一覧表示し、影響を受けるノードに関連付けられたマシンを特定します。
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、異常なメンバーのマシンを削除します。
oc delete machine -n openshift-machine-api <machine_name>
$ oc delete machine -n openshift-machine-api <machine_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;machine_name>を影響を受けるノードに関連付けられたマシン名に置き換えます。コマンドの例
oc delete machine -n openshift-machine-api examplecluster-control-plane-2
$ oc delete machine -n openshift-machine-api examplecluster-control-plane-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記BareMetalHostオブジェクトとMachineオブジェクトを削除すると、マシンコントローラーはNodeオブジェクトを自動的に削除します。何らかの理由でマシンの削除が遅れたり、コマンドが妨げられて遅れたりする場合は、マシンオブジェクトのファイナライザーフィールドを削除して強制的に削除します。
警告Ctrl+cを押してマシンの削除を中断しないでください。コマンドが完了するまで続行できるようにする必要があります。新しいターミナルウィンドウを開き、ファイナライザーフィールドを編集して削除します。新しいターミナルウィンドウで、次のコマンドを実行してマシン設定を編集します。
oc edit machine -n openshift-machine-api examplecluster-control-plane-2
$ oc edit machine -n openshift-machine-api examplecluster-control-plane-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow Machineカスタムリソースの次のフィールドを削除し、更新されたファイルを保存します。finalizers: - machine.machine.openshift.io
finalizers: - machine.machine.openshift.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
machine.machine.openshift.io/examplecluster-control-plane-2 edited
machine.machine.openshift.io/examplecluster-control-plane-2 editedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.4. 障害が発生したノードが削除されたことの確認 リンクのコピーリンクがクリップボードにコピーされました!
代替のコントロールプレーンノードの作成に進む前に、障害が発生したノードが正常に削除されたことを確認してください。
手順
以下のコマンドを実行して、マシンが削除されていることを確認します。
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME PHASE TYPE REGION ZONE AGE NODE PROVIDERID STATE examplecluster-control-plane-0 Running 3h11m openshift-control-plane-0 baremetalhost:///openshift-machine-api/openshift-control-plane-0/da1ebe11-3ff2-41c5-b099-0aa41222964e externally provisioned examplecluster-control-plane-1 Running 3h11m openshift-control-plane-1 baremetalhost:///openshift-machine-api/openshift-control-plane-1/d9f9acbc-329c-475e-8d81-03b20280a3e1 externally provisioned examplecluster-compute-0 Running 165m openshift-compute-0 baremetalhost:///openshift-machine-api/openshift-compute-0/3d685b81-7410-4bb3-80ec-13a31858241f provisioned examplecluster-compute-1 Running 165m openshift-compute-1 baremetalhost:///openshift-machine-api/openshift-compute-1/0fdae6eb-2066-4241-91dc-e7ea72ab13b9 provisioned
NAME PHASE TYPE REGION ZONE AGE NODE PROVIDERID STATE examplecluster-control-plane-0 Running 3h11m openshift-control-plane-0 baremetalhost:///openshift-machine-api/openshift-control-plane-0/da1ebe11-3ff2-41c5-b099-0aa41222964e externally provisioned examplecluster-control-plane-1 Running 3h11m openshift-control-plane-1 baremetalhost:///openshift-machine-api/openshift-control-plane-1/d9f9acbc-329c-475e-8d81-03b20280a3e1 externally provisioned examplecluster-compute-0 Running 165m openshift-compute-0 baremetalhost:///openshift-machine-api/openshift-compute-0/3d685b81-7410-4bb3-80ec-13a31858241f provisioned examplecluster-compute-1 Running 165m openshift-compute-1 baremetalhost:///openshift-machine-api/openshift-compute-1/0fdae6eb-2066-4241-91dc-e7ea72ab13b9 provisionedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ノードが削除されたことを確認します。
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS ROLES AGE VERSION openshift-control-plane-0 Ready master 3h24m v1.33.4 openshift-control-plane-1 Ready master 3h24m v1.33.4 openshift-compute-0 Ready worker 176m v1.33.4 openshift-compute-1 Ready worker 176m v1.33.4
NAME STATUS ROLES AGE VERSION openshift-control-plane-0 Ready master 3h24m v1.33.4 openshift-control-plane-1 Ready master 3h24m v1.33.4 openshift-compute-0 Ready worker 176m v1.33.4 openshift-compute-1 Ready worker 176m v1.33.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのクラスター Operator がロールアウトの変更を完了するまで待ちます。次のコマンドを実行して、進捗を監視します。
watch oc get co
$ watch oc get coCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.5. 新規コントロールプレーンノードの作成 リンクのコピーリンクがクリップボードにコピーされました!
BareMetalHost オブジェクトとノードを作成して、新しいコントロールプレーンノードの作成を開始します。
手順
以前に保存した
bmh_affected.yamlファイルを編集します。以下のメタデータをファイルから削除します。
-
creationTimestamp -
generation -
resourceVersion -
uid
-
-
ファイルの
statusセクションを削除します。
結果のファイルは以下の例のようになります。
bmh_affected.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
bmh_affected.yamlファイルを使用してBareMetalHostオブジェクトを作成します。oc create -f bmh_affected.yaml
$ oc create -f bmh_affected.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow BareMetalHostオブジェクトの作成時に、次の警告が期待されます。Warning: metadata.finalizers: "baremetalhost.metal3.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers
Warning: metadata.finalizers: "baremetalhost.metal3.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、コントロールプレーンの Ignition シークレットを抽出します。
oc extract secret/master-user-data-managed \ -n openshift-machine-api \ --keys=userData \ --to=- \ | sed '/^userData/d' > new_controlplane.ign$ oc extract secret/master-user-data-managed \ -n openshift-machine-api \ --keys=userData \ --to=- \ | sed '/^userData/d' > new_controlplane.ignCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、ignition シークレットの開始
userData行も削除します。次の参照例を使用して、新しいノードのネットワーク設定用の
new_controlplane_nmstate.yamlという名前の Nmstate YAML ファイルを作成します。Nmstate YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記エージェントベースのインストーラーを使用してクラスターをインストールした場合は、元のクラスターデプロイメントから失敗したノードのnetworkConfigセクションを、新しいコントロールプレーンノードの Nmstate ファイルの開始点として使用できます。たとえば、以下のコマンドは、最初のコントロールプレーンノードのnetworkConfigセクションを抽出します。cat agent-config-iso.yaml | yq .hosts[0].networkConfig > new_controlplane_nmstate.yaml
$ cat agent-config-iso.yaml | yq .hosts[0].networkConfig > new_controlplane_nmstate.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、カスタマイズされた Red Hat Enterprise Linux CoreOS (RHCOS)ライブ ISO を作成します。
coreos-installer iso customize rhcos-live.86_64.iso \ --dest-ignition new_controlplane.ign \ --network-nmstate new_controlplane_nmstate.yaml \ --dest-device /dev/disk/by-path/<device_path> \ -f$ coreos-installer iso customize rhcos-live.86_64.iso \ --dest-ignition new_controlplane.ign \ --network-nmstate new_controlplane_nmstate.yaml \ --dest-device /dev/disk/by-path/<device_path> \ -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow &
lt;device_path> を、ISO が生成されるターゲットデバイスへのパスに置き換えます。- カスタマイズされた RHCOS ライブ ISO で新しいコントロールプレーンノードを起動します。
- 証明書署名要求(CSR)を承認すると、新しいノードがクラスターに参加します。
6.6.6. ノード、ベアメタルホスト、およびマシンのリンク リンクのコピーリンクがクリップボードにコピーされました!
マシンを作成し、それを新しい BareMetalHost オブジェクトおよびノードにリンクすることにより、新しいコントロールプレーンノードの作成を続行します。
手順
次のコマンドを実行して、コントロールプレーンノードの
providerIDを取得します。oc get -n openshift-machine-api baremetalhost -l installer.openshift.io/role=control-plane -ojson | jq -r '.items[] | "baremetalhost:///openshift-machine-api/" + .metadata.name + "/" + .metadata.uid'
$ oc get -n openshift-machine-api baremetalhost -l installer.openshift.io/role=control-plane -ojson | jq -r '.items[] | "baremetalhost:///openshift-machine-api/" + .metadata.name + "/" + .metadata.uid'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
baremetalhost:///openshift-machine-api/master-00/6214c5cf-c798-4168-8c78-1ff1a3cd2cb4 baremetalhost:///openshift-machine-api/master-01/58fb60bd-b2a6-4ff3-a88d-208c33abf954 baremetalhost:///openshift-machine-api/master-02/dc5a94f3-625b-43f6-ab5a-7cc4fc79f105
baremetalhost:///openshift-machine-api/master-00/6214c5cf-c798-4168-8c78-1ff1a3cd2cb4 baremetalhost:///openshift-machine-api/master-01/58fb60bd-b2a6-4ff3-a88d-208c33abf954 baremetalhost:///openshift-machine-api/master-02/dc5a94f3-625b-43f6-ab5a-7cc4fc79f105Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ラベルのクラスター情報を取得します。
oc get machine -n openshift-machine-api \ -l machine.openshift.io/cluster-api-machine-role=master \ -L machine.openshift.io/cluster-api-cluster$ oc get machine -n openshift-machine-api \ -l machine.openshift.io/cluster-api-machine-role=master \ -L machine.openshift.io/cluster-api-clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME PHASE TYPE REGION ZONE AGE CLUSTER-API-CLUSTER ci-op-jcp3s7wx-ng5sd-master-0 Running 10h ci-op-jcp3s7wx-ng5sd ci-op-jcp3s7wx-ng5sd-master-1 Running 10h ci-op-jcp3s7wx-ng5sd ci-op-jcp3s7wx-ng5sd-master-2 Running 10h ci-op-jcp3s7wx-ng5sd
NAME PHASE TYPE REGION ZONE AGE CLUSTER-API-CLUSTER ci-op-jcp3s7wx-ng5sd-master-0 Running 10h ci-op-jcp3s7wx-ng5sd ci-op-jcp3s7wx-ng5sd-master-1 Running 10h ci-op-jcp3s7wx-ng5sd ci-op-jcp3s7wx-ng5sd-master-2 Running 10h ci-op-jcp3s7wx-ng5sdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のような yaml ファイルを作成して、新規コントロールプレーンノードの
Machineオブジェクトを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<new_control_plane_machine>- 新しいマシンの名前を指定します。これは以前に削除されたマシン名と同じになります。
<cluster_api_cluster>-
直前の手順の出力に示されるように、他のコントロールプレーンマシンの
CLUSTER-API-CLUSTER値を指定します。 <provider_id>-
前の手順の出力に示されている、新しいベアメタルホストの
providerID値を指定します。
次の警告が期待されます。
Warning: metadata.finalizers: "machine.machine.openshift.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers
Warning: metadata.finalizers: "machine.machine.openshift.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 単一の bash シェルセッションで次の手順を実行して、新しいコントロールプレーンノードと
MachineオブジェクトをBareMetalHostオブジェクトにリンクします。以下のコマンドを実行して
NEW_NODE_NAME変数を定義します。NEW_NODE_NAME=<new_node_name>
$ NEW_NODE_NAME=<new_node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow &
lt;new_node_name> を新しいコントロールプレーンノードの名前に置き換えます。以下のコマンドを実行して
NEW_MACHINE_NAME変数を定義します。NEW_MACHINE_NAME=<new_machine_name>
$ NEW_MACHINE_NAME=<new_machine_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow &
lt;new_machine_name> を新しいマシンの名前に置き換えます。次のコマンドを実行して、新しいノードの
BareMetalHostオブジェクトから抽出して、BMH_UIDを定義します。BMH_UID=$(oc get -n openshift-machine-api bmh $NEW_NODE_NAME -ojson | jq -r .metadata.uid)
$ BMH_UID=$(oc get -n openshift-machine-api bmh $NEW_NODE_NAME -ojson | jq -r .metadata.uid)Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $BMH_UID
$ echo $BMH_UIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、
consumerRefオブジェクトをベアメタルホストにパッチを適用します。oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --type merge --patch '{"spec":{"consumerRef":{"apiVersion":"machine.openshift.io/v1beta1","kind":"Machine","name":"'$NEW_MACHINE_NAME'","namespace":"openshift-machine-api"}}}'$ oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --type merge --patch '{"spec":{"consumerRef":{"apiVersion":"machine.openshift.io/v1beta1","kind":"Machine","name":"'$NEW_MACHINE_NAME'","namespace":"openshift-machine-api"}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
providerID値を新しいノードにパッチを適用します。oc patch node $NEW_NODE_NAME --type merge --patch '{"spec":{"providerID":"baremetalhost:///openshift-machine-api/'$NEW_NODE_NAME'/'$BMH_UID'"}}'$ oc patch node $NEW_NODE_NAME --type merge --patch '{"spec":{"providerID":"baremetalhost:///openshift-machine-api/'$NEW_NODE_NAME'/'$BMH_UID'"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
providerIDの値を確認します。oc get node -l node-role.kubernetes.io/control-plane -ojson | jq -r '.items[] | .metadata.name + " " + .spec.providerID'
$ oc get node -l node-role.kubernetes.io/control-plane -ojson | jq -r '.items[] | .metadata.name + " " + .spec.providerID'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、
BareMetalHostオブジェクトのpoweredOnステータスをtrueに設定します。oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --subresource status --type json -p '[{"op":"replace","path":"/status/poweredOn","value":true}]'$ oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --subresource status --type json -p '[{"op":"replace","path":"/status/poweredOn","value":true}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
BareMetalHostオブジェクトのpoweredOnステータスを確認します。oc get bmh -n openshift-machine-api -ojson | jq -r '.items[] | .metadata.name + " PoweredOn:" + (.status.poweredOn | tostring)'
$ oc get bmh -n openshift-machine-api -ojson | jq -r '.items[] | .metadata.name + " PoweredOn:" + (.status.poweredOn | tostring)'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
BareMetalHostオブジェクトのプロビジョニング状態を確認します。oc get bmh -n openshift-machine-api -ojson | jq -r '.items[] | .metadata.name + " ProvisioningState:" + .status.provisioning.state'
$ oc get bmh -n openshift-machine-api -ojson | jq -r '.items[] | .metadata.name + " ProvisioningState:" + .status.provisioning.state'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要プロビジョニング状態が
管理対象外ではない場合は、以下のコマンドを実行してプロビジョニング状態を変更します。oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --subresource status --type json -p '[{"op":"replace","path":"/status/provisioning/state","value":"unmanaged"}]'$ oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --subresource status --type json -p '[{"op":"replace","path":"/status/provisioning/state","value":"unmanaged"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、マシンの状態を
Provisionedに設定します。oc patch -n openshift-machine-api machines $NEW_MACHINE_NAME -n openshift-machine-api --subresource status --type json -p '[{"op":"replace","path":"/status/phase","value":"Provisioned"}]'$ oc patch -n openshift-machine-api machines $NEW_MACHINE_NAME -n openshift-machine-api --subresource status --type json -p '[{"op":"replace","path":"/status/phase","value":"Provisioned"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.7. 新規 etcd メンバーの追加 リンクのコピーリンクがクリップボードにコピーされました!
新しい etcd メンバーをクラスターに追加して、新しいコントロールプレーンノードの追加を終了します。
手順
単一の bash シェルセッションで以下の手順を実行して、新規 etcd メンバーをクラスターに追加します。
次のコマンドを実行して、新しいコントロールプレーンノードの IP を見つけます。
oc get nodes -owide -l node-role.kubernetes.io/control-plane
$ oc get nodes -owide -l node-role.kubernetes.io/control-planeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 後で使用できるようにノードの IP アドレスを書き留めておきます。
以下のコマンドを実行して、etcd Pod を一覧表示します。
oc get -n openshift-etcd pods -l k8s-app=etcd -o wide
$ oc get -n openshift-etcd pods -l k8s-app=etcd -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、実行中の etcd Pod のいずれかに接続します。新しいノード上の etcd Pod は
CrashLoopBackOff状態である必要があります。oc rsh -n openshift-etcd <running_pod>
$ oc rsh -n openshift-etcd <running_pod>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;running_pod>を直前の手順で表示される実行中の Pod の名前に置き換えます。以下のコマンドを実行して etcd メンバー一覧を表示します。
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、新しいコントロールプレーンの etcd メンバーを追加します。
etcdctl member add <new_node> --peer-urls="https://<ip_address>:2380"
sh-4.2# etcdctl member add <new_node> --peer-urls="https://<ip_address>:2380"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<new_node>- 新しいコントロールプレーンノードの名前を指定します。
<ip_address>- 新しいノードの IP アドレスを指定します。
次のコマンドを実行して rsh シェルを終了します。
exit
sh-4.2# exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のコマンドを実行して etcd の再デプロイメントを強制的に実行します。
oc patch etcd cluster -p='{"spec": {"forceRedeploymentReason": "single-master-recovery-'"$( date --rfc-3339=ns )"'"}}' --type=merge$ oc patch etcd cluster -p='{"spec": {"forceRedeploymentReason": "single-master-recovery-'"$( date --rfc-3339=ns )"'"}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、etcd クォーラムガードをオンに戻します。
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、クラスター Operator のロールアウトをモニターします。
watch oc get co
$ watch oc get coCopy to Clipboard Copied! Toggle word wrap Toggle overflow