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 クラスターをベアメタルにインストールしました。
手順
ProvisioningCR を作成します。次の YAML を
provisioning.yamlファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Container Platform 4.19 では、Bare Metal Operator を使用してユーザーがプロビジョニングしたクラスターをスケーリングする場合、プロビジョニングネットワークの有効化がサポートされません。
次のコマンドを実行して、
ProvisioningCR を作成します。oc create -f provisioning.yaml
$ oc create -f provisioning.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
provisioning.metal3.io/provisioning-configuration created
provisioning.metal3.io/provisioning-configuration createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、プロビジョニングサービスが実行されていることを確認します。
oc get pods -n openshift-machine-api
$ oc get pods -n openshift-machine-apiCopy 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) アクセス権限がある。
-
ProvisioningCR を作成して、クラスターにプロビジョニングサービスをデプロイしました。
手順
ベアメタルノードの設定ファイルを作成します。静的設定を使用するか、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.yamlCopy 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> createdCopy 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 trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
すべての証明書署名要求 (CSR) を承認します。
次のコマンドを実行して、保留中の CSR のリストを取得します。
oc get csr
$ oc get csrCopy 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> PendingCopy 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> approvedCopy 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 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+dc5a2fdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.4. オプション: BMO を使用して、ユーザーがプロビジョニングしたクラスターで既存のホストを管理する リンクのコピーリンクがクリップボードにコピーされました!
オプションで、Bare Metal Operator (BMO) を使用して、既存のホストの BareMetalHost オブジェクトを作成すると、ユーザーがプロビジョニングしたクラスターで既存のベアメタルコントローラーホストを管理できます。ユーザーがプロビジョニングした既存のホストを管理する必要はありません。ただし、それらをインベントリー目的で外部プロビジョニングされたホストとして登録することはできます。
BMO を使用して、既存のホストを管理するには、BareMetalHost カスタムリソースの spec.externallyProvisioned 仕様を true に設定して、BMO がホストを再プロビジョニングしないようにする必要があります。
前提条件
- ユーザーがプロビジョニングしたベアメタルクラスターを作成しました。
- ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。
-
ProvisioningCR を作成して、クラスターにプロビジョニングサービスをデプロイしました。
手順
SecretCR とBareMetalHostCR を作成します。次のコマンドを実行して、ベアメタルホストオブジェクトを作成します。
oc create -f controller.yaml
$ oc create -f controller.yamlCopy 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 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、BMO がベアメタルホストオブジェクトを作成したことを確認します。
oc get bmh -A
$ oc get bmh -ACopy 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 13sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.5. BMO を使用して、ユーザーがプロビジョニングしたクラスターからホストを削除する リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Operator (BMO) を使用して、ユーザーがプロビジョニングしたクラスターからベアメタルホストを削除できます。
前提条件
- ユーザーがプロビジョニングしたベアメタルクラスターを作成しました。
- ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。
-
ProvisioningCR を作成して、クラスターにプロビジョニングサービスをデプロイしました。
手順
次のコマンドを実行して、ノードをスケジューリング対象から外してドレインします。
oc adm drain app1 --force --ignore-daemonsets=true
$ oc adm drain app1 --force --ignore-daemonsets=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BareMetalHostCR からcustomDeploy仕様を削除します。次のコマンドを実行して、ホストの
BareMetalHostCR を編集します。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_coreosCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ホストのプロビジョニング状態が
deprovisioningに変わることを確認します。oc get bmh -A
$ oc get bmh -ACopy 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 57mCopy 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 注記このステップは、
BareMetalHostCR を編集しなくても実行できます。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 nodesCopy 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+dc5a2fdCopy to Clipboard Copied! Toggle word wrap Toggle overflow