6.2. ベアメタルコントロールプレーンノードの交換
以下の手順を使用して、installer-provisioned OpenShift Container Platform コントロールプレーンノードを置き換えます。
既存のコントロールプレーンホストから BareMetalHost オブジェクト定義を再利用する場合は、externallyProvisioned フィールドを true に設定したままにしないでください。
既存のコントロールプレーン BareMetalHost オブジェクトが、OpenShift Container Platform インストールプログラムによってプロビジョニングされた場合には、externallyProvisioned フラグが true に設定されている可能性があります。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 etcd のバックアップを取得している。
重要問題が発生した場合にクラスターを復元できるように、この手順を実行する前に etcd のバックアップを作成してください。etcd バックアップの作成に関する詳細は、関連情報 セクションを参照してください。
手順
Bare Metal Operator が使用可能であることを確認します。
$ oc get clusteroperator baremetal出力例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.13.0 True False False 3d15h古い
BareMetalHostオブジェクトおよびMachineオブジェクトを削除します。$ oc delete bmh -n openshift-machine-api <host_name> $ oc delete machine -n openshift-machine-api <machine_name><host_name>をホストの名前に、<machine_name>をマシンの名前に置き換えます。マシン名はCONSUMERフィールドの下に表示されます。BareMetalHostオブジェクトとMachineオブジェクトを削除すると、マシンコントローラーはNodeオブジェクトを自動的に削除します。新しい
BareMetalHostオブジェクトとシークレットを作成して BMC 認証情報を保存します。$ cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: control-plane-<num>-bmc-secret1 namespace: openshift-machine-api data: username: <base64_of_uid>2 password: <base64_of_pwd>3 type: Opaque --- apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: control-plane-<num>4 namespace: openshift-machine-api spec: automatedCleaningMode: disabled bmc: address: <protocol>://<bmc_ip>5 credentialsName: control-plane-<num>-bmc-secret6 bootMACAddress: <NIC1_mac_address>7 bootMode: UEFI externallyProvisioned: false online: true EOF- 1 4 6
nameおよびcredentialsNameフィールドの<num>は、ベアメタルノードのコントロールプレーン番号に置き換えます。- 2
<base64_of_uid>を、ユーザー名のbase64文字列に置き換えます。- 3
<base64_of_pwd>>を、パスワードのbase64文字列に置き換えます。- 5
<protocol>をredfish、redfish-virtualmedia、idrac-virtualmediaなどの BMC プロトコルに置き換えます。<bmc_ip>は、ベアメタルノードのベースボード管理コントローラーの IP アドレスに置き換えます。その他の BMC 設定オプションについては、関連情報 セクションの「BMC アドレス指定」を参照してください。- 7
<NIC1_mac_address>は、ベアメタルノードの最初の NIC の MAC アドレスに置き換えます。
検査が完了すると、
BareMetalHostオブジェクトが作成され、プロビジョニングできるようになります。利用可能な
BareMetalHostオブジェクトを表示します。$ oc get bmh -n openshift-machine-api出力例
NAME STATE CONSUMER ONLINE ERROR AGE control-plane-1.example.com available control-plane-1 true 1h10m control-plane-2.example.com externally provisioned control-plane-2 true 4h53m control-plane-3.example.com externally provisioned control-plane-3 true 4h53m compute-1.example.com provisioned compute-1-ktmmx true 4h53m compute-1.example.com provisioned compute-2-l2zmb true 4h53mコントロールプレーンノード用の
MachineSetオブジェクトがないため、代わりにMachineオブジェクトを作成する必要があります。別のコントロールプレーンMachineオブジェクトからproviderSpecをコピーできます。Machineオブジェクトを作成します。$ cat <<EOF | oc apply -f - apiVersion: machine.openshift.io/v1beta1 kind: Machine metadata: annotations: metal3.io/BareMetalHost: openshift-machine-api/control-plane-<num>1 labels: machine.openshift.io/cluster-api-cluster: control-plane-<num>2 machine.openshift.io/cluster-api-machine-role: master machine.openshift.io/cluster-api-machine-type: master name: control-plane-<num>3 namespace: openshift-machine-api spec: metadata: {} providerSpec: value: apiVersion: baremetal.cluster.k8s.io/v1alpha1 customDeploy: method: install_coreos hostSelector: {} image: checksum: "" url: "" kind: BareMetalMachineProviderSpec metadata: creationTimestamp: null userData: name: master-user-data-managed EOFBareMetalHostオブジェクトを表示するには、次のコマンドを実行します。$ oc get bmh -A出力例
NAME STATE CONSUMER ONLINE ERROR AGE control-plane-1.example.com provisioned control-plane-1 true 2h53m control-plane-2.example.com externally provisioned control-plane-2 true 5h53m control-plane-3.example.com externally provisioned control-plane-3 true 5h53m compute-1.example.com provisioned compute-1-ktmmx true 5h53m compute-2.example.com provisioned compute-2-l2zmb true 5h53mRHCOS のインストール後、
BareMetalHostがクラスターに追加されていることを確認します。$ oc get nodes出力例
NAME STATUS ROLES AGE VERSION control-plane-1.example.com available master 4m2s v1.26.9 control-plane-2.example.com available master 141m v1.26.9 control-plane-3.example.com available master 141m v1.26.9 compute-1.example.com available worker 87m v1.26.9 compute-2.example.com available worker 87m v1.26.9注記新しいコントロールプレーンノードの交換後、新しいノードで実行されている etcd Pod は
crashloopbackステータスになります。詳細は、関連情報 セクションの「正常でない etcd メンバーの置き換え」を参照してください。