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 およびその他の Metal 3 コンポーネントを使用して、ユーザーがプロビジョニングしたクラスター内のノードをスケーリングすることは可能です。

2.4.1.1. ユーザーがプロビジョニングしたクラスターをスケーリングするための前提条件

  • user-provisioned infrastructure クラスターをベアメタルにインストールしました。
  • ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。

2.4.1.2. ユーザーがプロビジョニングしたクラスターのスケーリングに関する制限事項

  • Bare Metal Operator (BMO) では、プロビジョニングネットワークを使用して、user-provisioned infrastructure クラスターをスケーリングすることはできません。

    • したがって、仮想メディアネットワークの起動をサポートするベアメタルホストドライバー (redfish-virtualmediaidrac-virtualmedia など) のみを使用できます。
  • BMO を使用して、user-provisioned infrastructure クラスター内の MachineSet オブジェクトをスケーリングすることはできません。

2.4.2. ユーザーがプロビジョニングしたクラスターをスケーリングするためのプロビジョニングリソースの設定

Provisioning カスタムリソース (CR) を作成して、user-provisioned infrastructure クラスターで Metal プラットフォームコンポーネントを有効にします。

前提条件

  • user-provisioned infrastructure クラスターをベアメタルにインストールしました。

手順

  1. Provisioning CR を作成します。

    1. 次の YAML を provisioning.yaml ファイルに保存します。

      apiVersion: metal3.io/v1alpha1
      kind: Provisioning
      metadata:
        name: provisioning-configuration
      spec:
        provisioningNetwork: "Disabled"
        watchAllNamespaces: false
      注記

      OpenShift Container Platform 4.18 では、Bare Metal Operator を使用してユーザーがプロビジョニングしたクラスターをスケーリングする場合、プロビジョニングネットワークの有効化がサポートされません。

  2. 次のコマンドを実行して、Provisioning CR を作成します。

    $ oc create -f provisioning.yaml

    出力例

    provisioning.metal3.io/provisioning-configuration created

検証

  • 次のコマンドを実行して、プロビジョニングサービスが実行されていることを確認します。

    $ oc get pods -n openshift-machine-api

    出力例

    NAME                                                  READY   STATUS    RESTARTS        AGE
    cluster-autoscaler-operator-678c476f4c-jjdn5          2/2     Running   0               5d21h
    cluster-baremetal-operator-6866f7b976-gmvgh           2/2     Running   0               5d21h
    control-plane-machine-set-operator-7d8566696c-bh4jz   1/1     Running   0               5d21h
    ironic-proxy-64bdw                                    1/1     Running   0               5d21h
    ironic-proxy-rbggf                                    1/1     Running   0               5d21h
    ironic-proxy-vj54c                                    1/1     Running   0               5d21h
    machine-api-controllers-544d6849d5-tgj9l              7/7     Running   1 (5d21h ago)   5d21h
    machine-api-operator-5c4ff4b86d-6fjmq                 2/2     Running   0               5d21h
    metal3-6d98f84cc8-zn2mx                               5/5     Running   0               5d21h
    metal3-image-customization-59d745768d-bhrp7           1/1     Running   0               5d21h

2.4.3. BMO を使用して、ユーザーがプロビジョニングしたクラスターで新しいホストをプロビジョニングする

Bare Metal Operator (BMO) を使用して、BareMetalHost カスタムリソース (CR) を作成すると、ユーザーがプロビジョニングしたクラスターにベアメタルホストをプロビジョニングできます。

注記

BMO を使用してベアメタルホストをクラスターにプロビジョニングすると、BareMetalHost カスタムリソースの spec.externallyProvisioned 仕様がデフォルトで false に設定されます。spec.externallyProvisioned 仕様を true に設定しないでください。この設定により予期しない動作が発生するためです。

前提条件

  • ユーザーがプロビジョニングしたベアメタルクラスターを作成しました。
  • ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。
  • Provisioning CR を作成して、クラスターにプロビジョニングサービスをデプロイしました。

手順

  1. ベアメタルノードの設定ファイルを作成します。静的設定を使用するか、DHCP サーバーを使用するかに応じて、次のサンプル bmh.yaml ファイルのいずれかを選択します。YAML 内の値を環境に合わせて置き換えて、ニーズに合わせて設定します。

    • 静的設定でデプロイする場合は、次の bmh.yaml ファイルを作成します。

      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: openshift-worker-<num>-network-config-secret 1
        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
      namecredentialsName、および 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-secret 1
        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 アドレスの診断」を参照してください。

  2. 次のコマンドを実行してベアメタルノードを作成します。

    $ 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

  3. 次のコマンドを実行してベアメタルノードを検査します。

    $ oc -n openshift-machine-api get bmh openshift-worker-<num>

    ここでは、以下のようになります。

    <num>

    コンピュートノード番号を指定します。

    出力例

    NAME                    STATE       CONSUMER   ONLINE   ERROR
    openshift-worker-<num>  provisioned true

  4. すべての証明書署名要求 (CSR) を承認します。

    1. 次のコマンドを実行して、保留中の 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

    2. 次のコマンドを実行して、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

2.4.4. オプション: BMO を使用して、ユーザーがプロビジョニングしたクラスターで既存のホストを管理する

オプションで、Bare Metal Operator (BMO) を使用して、既存のホストの BareMetalHost オブジェクトを作成すると、ユーザーがプロビジョニングしたクラスターで既存のベアメタルコントローラーホストを管理できます。ユーザーがプロビジョニングした既存のホストを管理する必要はありません。ただし、それらをインベントリー目的で外部プロビジョニングされたホストとして登録することはできます。

重要

BMO を使用して、既存のホストを管理するには、BareMetalHost カスタムリソースの spec.externallyProvisioned 仕様を true に設定して、BMO がホストを再プロビジョニングしないようにする必要があります。

前提条件

  • ユーザーがプロビジョニングしたベアメタルクラスターを作成しました。
  • ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。
  • Provisioning CR を作成して、クラスターにプロビジョニングサービスをデプロイしました。

手順

  1. Secret CR と BareMetalHost CR を作成します。

    1. 次の YAML を controller.yaml ファイルに保存します。

      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: controller1-bmc
        namespace: openshift-machine-api
      type: Opaque
      data:
        username: <base64_of_uid>
        password: <base64_of_pwd>
      ---
      apiVersion: metal3.io/v1alpha1
      kind: BareMetalHost
      metadata:
        name: controller1
        namespace: openshift-machine-api
      spec:
        bmc:
          address: <protocol>://<bmc_url> 1
          credentialsName: "controller1-bmc"
        bootMACAddress: <nic1_mac_address>
        customDeploy:
          method: install_coreos
        externallyProvisioned: true 2
        online: true
        userData:
          name: controller-user-data-managed
          namespace: openshift-machine-api
      1
      仮想メディアネットワークの起動をサポートするベアメタルホストドライバー (redfish-virtualmediaidrac-virtualmedia など) のみを使用できます。
      2
      BMO がベアメタルコントローラーホストを再プロビジョニングしないようにするには、値を true に設定する必要があります。
  2. 次のコマンドを実行して、ベアメタルホストオブジェクトを作成します。

    $ oc create -f controller.yaml

    出力例

    secret/controller1-bmc created
    baremetalhost.metal3.io/controller1 created

検証

  • 次のコマンドを実行して、BMO がベアメタルホストオブジェクトを作成したことを確認します。

    $ oc get bmh -A

    出力例

    NAMESPACE               NAME          STATE                    CONSUMER   ONLINE   ERROR   AGE
    openshift-machine-api   controller1   externally provisioned              true             13s

2.4.5. BMO を使用して、ユーザーがプロビジョニングしたクラスターからホストを削除する

Bare Metal Operator (BMO) を使用して、ユーザーがプロビジョニングしたクラスターからベアメタルホストを削除できます。

前提条件

  • ユーザーがプロビジョニングしたベアメタルクラスターを作成しました。
  • ホストへのベースボード管理コントローラー (BMC) アクセス権限がある。
  • Provisioning CR を作成して、クラスターにプロビジョニングサービスをデプロイしました。

手順

  1. 次のコマンドを実行して、ノードをスケジューリング対象から外してドレインします。

    $ oc adm drain app1 --force --ignore-daemonsets=true

    出力例

    node/app1 cordoned
    WARNING: ignoring DaemonSet-managed Pods: openshift-cluster-node-tuning-operator/tuned-tvthg, openshift-dns/dns-
    default-9q6rz, openshift-dns/node-resolver-zvt42, openshift-image-registry/node-ca-mzxth, openshift-ingress-cana
    ry/ingress-canary-qq5lf, openshift-machine-config-operator/machine-config-daemon-v79dm, openshift-monitoring/nod
    e-exporter-2vn59, openshift-multus/multus-additional-cni-plugins-wssvj, openshift-multus/multus-fn8tg, openshift
    -multus/network-metrics-daemon-5qv55, openshift-network-diagnostics/network-check-target-jqxn2, openshift-ovn-ku
    bernetes/ovnkube-node-rsvqg
    evicting pod openshift-operator-lifecycle-manager/collect-profiles-27766965-258vp
    evicting pod openshift-operator-lifecycle-manager/collect-profiles-27766950-kg5mk
    evicting pod openshift-operator-lifecycle-manager/collect-profiles-27766935-stf4s
    pod/collect-profiles-27766965-258vp evicted
    pod/collect-profiles-27766950-kg5mk evicted
    pod/collect-profiles-27766935-stf4s evicted
    node/app1 drained

  2. BareMetalHost CR から customDeploy 仕様を削除します。

    1. 次のコマンドを実行して、ホストの BareMetalHost CR を編集します。

      $ oc edit bmh -n openshift-machine-api <host_name>
    2. spec.customDeploy および spec.customDeploy.method の行を削除します。

      ...
        customDeploy:
          method: install_coreos
    3. 次のコマンドを実行して、ホストのプロビジョニング状態が deprovisioning に変わることを確認します。

      $ oc get bmh -A

      出力例

      NAMESPACE               NAME          STATE                    CONSUMER   ONLINE   ERROR   AGE
      openshift-machine-api   controller1   externally provisioned              true             58m
      openshift-machine-api   worker1       deprovisioning                      true             57m

  3. BareMetalHost の状態が available に変わったら、次のコマンドを実行してホストを削除します。

    $ oc delete bmh -n openshift-machine-api <bmh_name>
    注記

    このステップは、BareMetalHost CR を編集しなくても実行できます。BareMetalHost の状態が deprovisioning から available に変わるまでに、しばらく時間がかかる場合があります。

  4. 次のコマンドを実行して、ノードを削除します。

    $ oc delete node <node_name>

検証

  • 次のコマンドを実行して、ノードが削除されたことを確認します。

    $ oc get nodes

    出力例

    NAME          STATUS   ROLES           AGE     VERSION
    controller1   Ready    master,worker   2d23h   v1.24.0+dc5a2fd

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.