6.6. BMC 認証情報なしで障害が発生したベアメタルコントロールプレーンノードを置き換える
ベアメタルクラスターのコントロールプレーンノードに障害が発生し、回復できない場合に、ベースボード管理コントローラー (BMC) の認証情報を指定せずにクラスターをインストールした場合は、障害が発生したノードを新しいノードに置き換えるために追加の手順を実行する必要があります。
6.6.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 異常なベアメタル etcd メンバーを特定している。
- マシンが実行されていないか、ノードが準備状態にないことを確認している。
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - 問題が発生した場合に備えて、etcd のバックアップ を作成している。
-
coreos-installerCLI をダウンロードしてインストールしている。 クラスターにコントロールプレーン
machinesetがない。次のコマンドを実行して、machinesetsを確認できます。oc get machinesets,controlplanemachinesets -n openshift-machine-api
$ oc get machinesets,controlplanemachinesets -n openshift-machine-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ワーカー用には
machinesetsが 1 つ以上必要です。コントロールプレーンにcontrolplanemachinesetsが存在する場合は、この手順を使用しないでください。
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 メンバーのリストを表示します。異常な etcd メンバーの ID と名前をメモしてください。これらの値は後で必要になります。
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 <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 インスタンスが再起動している間、クラスターに短時間アクセスできない場合があります。
次のコマンドを実行して、etcd Pod への rsh セッションを終了します。
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 注記Agent-based Installer を使用してクラスターをインストールした場合は、元のクラスターデプロイメントの
agent-config.yamlファイルにある障害が発生したノードの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 <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 <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 <new_machine_name>は、新しいマシンの名前に置き換えます。以下のコマンドを実行して
BMH_UIDを定義し、これを新しいノードのBareMetalHostオブジェクトから抽出します。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 重要プロビジョニング状態が
unmanagedでない場合は、次のコマンドを実行してプロビジョニング状態を変更します。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 の 1 つに接続します。新しいノード上の 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