2.4. Bare Metal Operator を使用したユーザープロビジョニングクラスターのスケーリング
user-provisioned infrastructure クラスターをデプロイした後、Bare Metal Operator (BMO) およびその他の metal3 コンポーネントを使用して、クラスター内のベアメタルホストをスケーリングできます。このアプローチは、ユーザーがプロビジョニングしたクラスターをより自動化された方法でスケーリングするために役立ちます。
2.4.1. Bare Metal Operator を使用したユーザープロビジョニングクラスターのスケーリングについて リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Operator (BMO) およびその他の metal3 コンポーネントを使用して、user-provisioned infrastructure クラスターをスケーリングできます。user-provisioned infrastructure のインストールには、Machine API Operator が含まれていません。通常は Machine API Operator がクラスター内のベアメタルノードのライフサイクルを管理します。しかし、Machine API Operator がなくても、BMO およびその他の metal3 コンポーネントを使用して、ユーザーがプロビジョニングしたクラスター内のノードをスケーリングすることは可能です。
2.4.1.1. ユーザーがプロビジョニングしたクラスターをスケーリングするための前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- user-provisioned infrastructure クラスターをベアメタルにインストールしました。
- ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。
2.4.1.2. ユーザーがプロビジョニングしたクラスターのスケーリングに関する制限事項 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Operator (BMO) では、プロビジョニングネットワークを使用して、user-provisioned infrastructure クラスターをスケーリングすることはできません。
-
したがって、仮想メディアネットワークの起動をサポートするベアメタルホストドライバー (
redfish-virtualmedia
やidrac-virtualmedia
など) のみを使用できます。
-
したがって、仮想メディアネットワークの起動をサポートするベアメタルホストドライバー (
-
BMO を使用して、user-provisioned infrastructure クラスター内の
MachineSet
オブジェクトをスケーリングすることはできません。
2.4.2. ユーザーがプロビジョニングしたクラスターをスケーリングするためのプロビジョニングリソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
Provisioning
カスタムリソース (CR) を作成して、user-provisioned infrastructure クラスターで Metal プラットフォームコンポーネントを有効にします。
前提条件
- user-provisioned infrastructure クラスターをベアメタルにインストールしました。
手順
Provisioning
CR を作成します。次の YAML を
provisioning.yaml
ファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Container Platform 4.18 では、Bare Metal Operator を使用してユーザーがプロビジョニングしたクラスターをスケーリングする場合、プロビジョニングネットワークの有効化がサポートされません。
次のコマンドを実行して、
Provisioning
CR を作成します。oc create -f provisioning.yaml
$ oc create -f provisioning.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
provisioning.metal3.io/provisioning-configuration created
provisioning.metal3.io/provisioning-configuration created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、プロビジョニングサービスが実行されていることを確認します。
oc get pods -n openshift-machine-api
$ oc get pods -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.3. BMO を使用して、ユーザーがプロビジョニングしたクラスターで新しいホストをプロビジョニングする リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Operator (BMO) を使用して、BareMetalHost
カスタムリソース (CR) を作成すると、ユーザーがプロビジョニングしたクラスターにベアメタルホストをプロビジョニングできます。
BMO を使用してベアメタルホストをクラスターにプロビジョニングすると、BareMetalHost
カスタムリソースの spec.externallyProvisioned
仕様がデフォルトで false
に設定されます。spec.externallyProvisioned
仕様を true
に設定しないでください。この設定により予期しない動作が発生するためです。
前提条件
- ユーザーがプロビジョニングしたベアメタルクラスターを作成しました。
- ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。
-
Provisioning
CR を作成して、クラスターにプロビジョニングサービスをデプロイしました。
手順
ベアメタルノードの設定ファイルを作成します。静的設定を使用するか、DHCP サーバーを使用するかに応じて、次のサンプル
bmh.yaml
ファイルのいずれかを選択します。YAML 内の値を環境に合わせて置き換えて、ニーズに合わせて設定します。静的設定でデプロイする場合は、次の
bmh.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
name
、credentialsName
、およびpreprovisioningNetworkDataName
フィールドのすべての<num>
を、ベアメタルノードの一意のコンピュートノード番号に置き換えます。- 2
- NMState YAML 構文を追加して、ホストインターフェイスを設定します。新しく作成されたノードのネットワークインターフェイスを設定するには、ネットワーク設定が含まれるシークレットの名前を指定します。
nmstate
構文に従って、ノードのネットワーク設定を定義します。NMState 構文の設定の詳細は、「ベアメタルノードの準備」を参照してください。 - 3
- オプション:
nmstate
を使用してネットワークインターフェイスを設定しており、インターフェイスを無効にする場合は、IP アドレスをenabled: false
に設定してstate: up
を設定します。 - 4
<nic1_name>
は、ベアメタルノードの最初のネットワークインターフェイスコントローラー (NIC) の名前に置き換えます。- 5
<ip_address>
は、ベアメタルノードの NIC の IP アドレスに置き換えます。- 6
<dns_ip_address>
は、ベアメタルノードの DNS リゾルバーの IP アドレスに置き換えます。- 7
<next_hop_ip_address>
は、ベアメタルノードの外部ゲートウェイの IP アドレスに置き換えます。- 8
<next_hop_nic1_name>
は、ベアメタルノードの外部ゲートウェイの名前に置き換えます。- 9
<base64_of_uid>
と<base64_of_pwd>
は、ユーザー名とパスワードの base64 文字列に置き換えます。- 10
<nic1_mac_address>
は、ベアメタルノードの最初の NIC の MAC アドレスに置き換えます。追加の BMC 設定オプションは、「BMC アドレス指定」のセクションを参照してください。- 11
<protocol>
は、IPMI、Redfish などの BMC プロトコルに置き換えます。<bmc_url>
は、ベアメタルノードのベースボード管理コントローラーの URL に置き換えます。- 12
- オプション: ルートデバイスのヒントを指定する場合は、
<root_device_hint>
をデバイスパスに置き換えます。詳細は、「ルートデバイスのヒント」を参照してください。
nmstate
を使用して静的設定でネットワークインターフェイスを設定する場合は、IP アドレスをenabled: false
に設定してstate: up
を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow DHCP 設定でデプロイする場合は、次の
bmh.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
name
およびcredentialsName
フィールドの<num>
は、ベアメタルノードの一意のコンピュートノード番号に置き換えます。- 2
<base64_of_uid>
と<base64_of_pwd>
は、ユーザー名とパスワードの base64 文字列に置き換えます。- 3
<nic1_mac_address>
は、ベアメタルノードの最初の NIC の MAC アドレスに置き換えます。追加の BMC 設定オプションは、「BMC アドレス指定」のセクションを参照してください。- 4
<protocol>
は、IPMI、Redfish などの BMC プロトコルに置き換えます。<bmc_url>
は、ベアメタルノードのベースボード管理コントローラーの URL に置き換えます。- 5
- オプション: ルートデバイスのヒントを指定する場合は、
<root_device_hint>
をデバイスパスに置き換えます。詳細は、「ルートデバイスのヒント」を参照してください。
重要既存のベアメタルノードの MAC アドレスが、プロビジョニングしようとしているベアメタルホストの MAC アドレスと一致する場合、インストールが失敗します。ホストの登録、検査、クリーニング、またはその他の手順が失敗した場合、Bare Metal Operator がインストールを継続的に再試行します。詳細は、「クラスター内の新しいホストをプロビジョニングする際の重複する MAC アドレスの診断」を参照してください。
次のコマンドを実行してベアメタルノードを作成します。
oc create -f bmh.yaml
$ oc create -f bmh.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
secret/openshift-worker-<num>-network-config-secret created secret/openshift-worker-<num>-bmc-secret created baremetalhost.metal3.io/openshift-worker-<num> created
secret/openshift-worker-<num>-network-config-secret created secret/openshift-worker-<num>-bmc-secret created baremetalhost.metal3.io/openshift-worker-<num> created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してベアメタルノードを検査します。
oc -n openshift-machine-api get bmh openshift-worker-<num>
$ oc -n openshift-machine-api get bmh openshift-worker-<num>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <num>
コンピュートノード番号を指定します。
出力例
NAME STATE CONSUMER ONLINE ERROR openshift-worker-<num> provisioned true
NAME STATE CONSUMER ONLINE ERROR openshift-worker-<num> provisioned true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
すべての証明書署名要求 (CSR) を承認します。
次のコマンドを実行して、保留中の CSR のリストを取得します。
oc get csr
$ oc get csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION csr-gfm9f 33s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-o perator:node-bootstrapper <none> Pending
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION csr-gfm9f 33s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-o perator:node-bootstrapper <none> Pending
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、CSR を承認します。
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
certificatesigningrequest.certificates.k8s.io/<csr_name> approved
certificatesigningrequest.certificates.k8s.io/<csr_name> approved
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 app1 Ready worker 47s v1.24.0+dc5a2fd controller1 Ready master,worker 2d22h v1.24.0+dc5a2fd
NAME STATUS ROLES AGE VERSION app1 Ready worker 47s v1.24.0+dc5a2fd controller1 Ready master,worker 2d22h v1.24.0+dc5a2fd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.4. オプション: BMO を使用して、ユーザーがプロビジョニングしたクラスターで既存のホストを管理する リンクのコピーリンクがクリップボードにコピーされました!
オプションで、Bare Metal Operator (BMO) を使用して、既存のホストの BareMetalHost
オブジェクトを作成すると、ユーザーがプロビジョニングしたクラスターで既存のベアメタルコントローラーホストを管理できます。ユーザーがプロビジョニングした既存のホストを管理する必要はありません。ただし、それらをインベントリー目的で外部プロビジョニングされたホストとして登録することはできます。
BMO を使用して、既存のホストを管理するには、BareMetalHost
カスタムリソースの spec.externallyProvisioned
仕様を true
に設定して、BMO がホストを再プロビジョニングしないようにする必要があります。
前提条件
- ユーザーがプロビジョニングしたベアメタルクラスターを作成しました。
- ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。
-
Provisioning
CR を作成して、クラスターにプロビジョニングサービスをデプロイしました。
手順
Secret
CR とBareMetalHost
CR を作成します。次のコマンドを実行して、ベアメタルホストオブジェクトを作成します。
oc create -f controller.yaml
$ oc create -f controller.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
secret/controller1-bmc created baremetalhost.metal3.io/controller1 created
secret/controller1-bmc created baremetalhost.metal3.io/controller1 created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、BMO がベアメタルホストオブジェクトを作成したことを確認します。
oc get bmh -A
$ oc get bmh -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE openshift-machine-api controller1 externally provisioned true 13s
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE openshift-machine-api controller1 externally provisioned true 13s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.5. BMO を使用して、ユーザーがプロビジョニングしたクラスターからホストを削除する リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Operator (BMO) を使用して、ユーザーがプロビジョニングしたクラスターからベアメタルホストを削除できます。
前提条件
- ユーザーがプロビジョニングしたベアメタルクラスターを作成しました。
- ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。
-
Provisioning
CR を作成して、クラスターにプロビジョニングサービスをデプロイしました。
手順
次のコマンドを実行して、ノードをスケジューリング対象から外してドレインします。
oc adm drain app1 --force --ignore-daemonsets=true
$ oc adm drain app1 --force --ignore-daemonsets=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BareMetalHost
CR からcustomDeploy
仕様を削除します。次のコマンドを実行して、ホストの
BareMetalHost
CR を編集します。oc edit bmh -n openshift-machine-api <host_name>
$ oc edit bmh -n openshift-machine-api <host_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.customDeploy
およびspec.customDeploy.method
の行を削除します。... customDeploy: method: install_coreos
... customDeploy: method: install_coreos
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ホストのプロビジョニング状態が
deprovisioning
に変わることを確認します。oc get bmh -A
$ oc get bmh -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE openshift-machine-api controller1 externally provisioned true 58m openshift-machine-api worker1 deprovisioning true 57m
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE openshift-machine-api controller1 externally provisioned true 58m openshift-machine-api worker1 deprovisioning true 57m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BareMetalHost
の状態がavailable
に変わったら、次のコマンドを実行してホストを削除します。oc delete bmh -n openshift-machine-api <bmh_name>
$ oc delete bmh -n openshift-machine-api <bmh_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このステップは、
BareMetalHost
CR を編集しなくても実行できます。BareMetalHost
の状態がdeprovisioning
からavailable
に変わるまでに、しばらく時間がかかる場合があります。次のコマンドを実行して、ノードを削除します。
oc delete node <node_name>
$ oc delete node <node_name>
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 controller1 Ready master,worker 2d23h v1.24.0+dc5a2fd
NAME STATUS ROLES AGE VERSION controller1 Ready master,worker 2d23h v1.24.0+dc5a2fd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow