5.3. BMO を使用して、ユーザーがプロビジョニングしたクラスターで新しいホストをプロビジョニングする
Bare Metal Operator (BMO) を使用して、BareMetalHost カスタムリソース (CR) を作成すると、ユーザーがプロビジョニングしたクラスターにベアメタルホストをプロビジョニングできます。
BMO を使用してベアメタルホストをクラスターにプロビジョニングすると、BareMetalHost カスタムリソースの spec.externallyProvisioned 仕様がデフォルトで false に設定されます。spec.externallyProvisioned 仕様を true に設定しないでください。この設定により予期しない動作が発生するためです。
前提条件
- ユーザーがプロビジョニングしたベアメタルクラスターを作成しました。
- ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。
-
ProvisioningCR を作成して、クラスターにプロビジョニングサービスをデプロイしました。
手順
ベアメタルノードの設定ファイルを作成します。静的設定を使用するか、DHCP サーバーを使用するかに応じて、次のサンプル
bmh.yamlファイルのいずれかを選択します。YAML 内の値を環境に合わせて置き換えて、ニーズに合わせて設定します。静的設定でデプロイする場合は、次の
bmh.yamlファイルを作成します。--- apiVersion: v1 kind: Secret metadata: name: openshift-worker-<num>-network-config-secret1 namespace: openshift-machine-api type: Opaque stringData: nmstate: |2 interfaces:3 - name: <nic1_name>4 type: ethernet state: up ipv4: address: - ip: <ip_address>5 prefix-length: 24 enabled: true dns-resolver: config: server: - <dns_ip_address>6 routes: config: - destination: 0.0.0.0/0 next-hop-address: <next_hop_ip_address>7 next-hop-interface: <next_hop_nic1_name>8 --- apiVersion: v1 kind: Secret metadata: name: openshift-worker-<num>-bmc-secret namespace: openshift-machine-api type: Opaque data: username: <base64_of_uid>9 password: <base64_of_pwd> --- apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: openshift-worker-<num> namespace: openshift-machine-api spec: online: true bootMACAddress: <nic1_mac_address>10 bmc: address: <protocol>://<bmc_url>11 credentialsName: openshift-worker-<num>-bmc-secret disableCertificateVerification: false customDeploy: method: install_coreos userData: name: worker-user-data-managed namespace: openshift-machine-api rootDeviceHints: deviceName: <root_device_hint>12 preprovisioningNetworkDataName: openshift-worker-<num>-network-config-secret- 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を設定します。--- apiVersion: v1 kind: Secret metadata: name: openshift-worker-<num>-network-config-secret namespace: openshift-machine-api # ... interfaces: - name: <nic_name> type: ethernet state: up ipv4: enabled: false ipv6: enabled: false # ...DHCP 設定でデプロイする場合は、次の
bmh.yamlファイルを作成します。--- apiVersion: v1 kind: Secret metadata: name: openshift-worker-<num>-bmc-secret1 namespace: openshift-machine-api type: Opaque data: username: <base64_of_uid>2 password: <base64_of_pwd> --- apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: openshift-worker-<num> namespace: openshift-machine-api spec: online: true bootMACAddress: <nic1_mac_address>3 bmc: address: <protocol>://<bmc_url>4 credentialsName: openshift-worker-<num>-bmc disableCertificateVerification: false customDeploy: method: install_coreos userData: name: worker-user-data-managed namespace: openshift-machine-api rootDeviceHints: deviceName: <root_device_hint>5 - 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出力例
secret/openshift-worker-<num>-network-config-secret created secret/openshift-worker-<num>-bmc-secret created baremetalhost.metal3.io/openshift-worker-<num> created次のコマンドを実行してベアメタルノードを検査します。
$ oc -n openshift-machine-api get bmh openshift-worker-<num>ここでは、以下のようになります。
- <num>
コンピュートノード番号を指定します。
出力例
NAME STATE CONSUMER ONLINE ERROR openshift-worker-<num> provisioned true
すべての証明書署名要求 (CSR) を承認します。
次のコマンドを実行して、保留中の CSR のリストを取得します。
$ oc get csr出力例
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次のコマンドを実行して、CSR を承認します。
$ oc adm certificate approve <csr_name>出力例
certificatesigningrequest.certificates.k8s.io/<csr_name> approved
検証
次のコマンドを実行して、ノードの準備ができていることを確認します。
$ oc get nodes出力例
NAME STATUS ROLES AGE VERSION app1 Ready worker 47s v1.24.0+dc5a2fd controller1 Ready master,worker 2d22h v1.24.0+dc5a2fd