6.2. ベアメタルコントロールプレーンノードの交換
以下の手順を使用して、installer-provisioned OpenShift Container Platform コントロールプレーンノードを置き換えます。
既存のコントロールプレーンホストから BareMetalHost
オブジェクト定義を再利用する場合は、externallyProvisioned
フィールドを true
に設定したままにしないでください。
既存のコントロールプレーン BareMetalHost
オブジェクトが、OpenShift Container Platform インストールプログラムによってプロビジョニングされた場合には、externallyProvisioned
フラグが true
に設定されている可能性があります。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 etcd のバックアップを取得している。
重要問題が発生した場合にクラスターを復元できるように、この手順を実行する前に etcd のバックアップを作成してください。etcd バックアップの作成に関する詳細は、関連情報 セクションを参照してください。
手順
Bare Metal Operator が使用可能であることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get clusteroperator baremetal
$ oc get clusteroperator baremetal
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.12.0 True False False 3d15h
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.12.0 True False False 3d15h
古い
BareMetalHost
オブジェクトおよびMachine
オブジェクトを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete bmh -n openshift-machine-api <host_name> oc delete machine -n openshift-machine-api <machine_name>
$ 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 認証情報を保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: control-plane-<num>-bmc-secret namespace: openshift-machine-api data: username: <base64_of_uid> password: <base64_of_pwd> type: Opaque --- apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: control-plane-<num> namespace: openshift-machine-api spec: automatedCleaningMode: disabled bmc: address: <protocol>://<bmc_ip> credentialsName: control-plane-<num>-bmc-secret bootMACAddress: <NIC1_mac_address> bootMode: UEFI externallyProvisioned: false online: true EOF
$ cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: control-plane-<num>-bmc-secret
1 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-secret
6 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>
を、ベアメタルノードのベースボード管理コントローラー (BMC) の IP アドレスに置き換えます。その他の BMC 設定オプションについては、関連情報 セクションの「BMC アドレス指定」を参照してください。- 7
<NIC1_mac_address>
は、ベアメタルノードの最初の NIC の MAC アドレスに置き換えます。
検査が完了すると、
BareMetalHost
オブジェクトが作成され、プロビジョニングできるようになります。利用可能な
BareMetalHost
オブジェクトを表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get bmh -n openshift-machine-api
$ oc get bmh -n openshift-machine-api
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
オブジェクトを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat <<EOF | oc apply -f - apiVersion: machine.openshift.io/v1beta1 kind: Machine metadata: annotations: metal3.io/BareMetalHost: openshift-machine-api/control-plane-<num> labels: machine.openshift.io/cluster-api-cluster: control-plane-<num> machine.openshift.io/cluster-api-machine-role: master machine.openshift.io/cluster-api-machine-type: master name: control-plane-<num> 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 EOF
$ 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 EOF
BareMetalHost
オブジェクトを表示するには、次のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get bmh -A
$ oc get bmh -A
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 5h53m
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 5h53m
RHCOS のインストール後、
BareMetalHost
がクラスターに追加されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get nodes
$ oc get nodes
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME STATUS ROLES AGE VERSION control-plane-1.example.com available master 4m2s v1.18.2 control-plane-2.example.com available master 141m v1.18.2 control-plane-3.example.com available master 141m v1.18.2 compute-1.example.com available worker 87m v1.18.2 compute-2.example.com available worker 87m v1.18.2
NAME STATUS ROLES AGE VERSION control-plane-1.example.com available master 4m2s v1.18.2 control-plane-2.example.com available master 141m v1.18.2 control-plane-3.example.com available master 141m v1.18.2 compute-1.example.com available worker 87m v1.18.2 compute-2.example.com available worker 87m v1.18.2
注記新しいコントロールプレーンノードの交換後、新しいノードで実行されている etcd Pod は
crashloopback
ステータスになります。詳細は、関連情報 セクションの「正常でない etcd メンバーの置き換え」を参照してください。