11.2. Cluster API の使用開始


Machine API と Cluster API は、同様のリソースを持つ異なる API グループです。これらの API グループを使用して、OpenShift Container Platform クラスター上のインフラストラクチャーリソースの管理を自動化できます。

重要

Cluster API を使用したマシン管理は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

3 つのコントロールプレーンノードと 3 つのコンピュートノードを持ち、デフォルトの設定オプションを使用する標準の OpenShift Container Platform クラスターをインストールすると、インストールプログラムは openshift-machine-api namespace に以下のインフラストラクチャーリソースをプロビジョニングします。

  • 3 つのコントロールプレーンマシンを管理する 1 つのコントロールプレーンマシンセット。
  • 3 台のコンピュートマシンを管理する 1 つ以上のコンピュートマシンセット。
  • スポットインスタンスを管理する 1 つのマシンヘルスチェック。

Cluster API を使用してインフラストラクチャーリソースの管理をサポートするクラスターをインストールすると、インストールプログラムは openshift-cluster-api namespace に以下のリソースをプロビジョニングします。

  • 1 つのクラスターリソース。
  • 1 つのプロバイダー固有のインフラストラクチャークラスターリソース。

Machine API リソースから Cluster API リソースへの移行をサポートするクラスターでは、双方向同期コントローラーによってこれらのプライマリーリソースが自動的に作成されます。詳細は、Machine API リソースの Cluster API リソースへの移行 を参照してください。

11.2.1. Cluster API のプライマリーリソースの作成

Machine API リソースから Cluster API リソースへの移行をサポートしていないクラスターの場合は、openshift-cluster-api namespace に次の Cluster API リソースを手動で作成する必要があります。

  • コンピュートマシンセットに対応する 1 つ以上のマシンテンプレート。
  • 3 台のコンピュートマシンを管理する 1 つ以上のコンピュートマシンセット。

11.2.1.1. Cluster API のマシンテンプレートの作成

YAML マニフェストファイルを作成し、それを OpenShift CLI (oc) で適用することで、プロバイダー固有のマシンテンプレートリソースを作成できます。

前提条件

  • OpenShift Container Platform クラスターをデプロイした。
  • Cluster API の使用を有効化している。
  • cluster-admin 権限を持つアカウントを使用してクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. 以下のような YAML ファイルを作成します。この手順では、ファイル名の例として <machine_template_resource_file>.yaml を使用します。

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: <machine_template_kind> 
    1
    
    metadata:
      name: <template_name> 
    2
    
      namespace: openshift-cluster-api
    spec:
      template:
        spec: 
    3
    Copy to Clipboard Toggle word wrap
    1
    マシンテンプレートの種類を指定します。この値は、プラットフォームの値と一致する必要があります。次の値が有効です。
    Expand
    クラスターインフラストラクチャープロバイダー

    Amazon Web Services (AWS)

    AWSMachineTemplate

    Google Cloud Platform (GCP)

    GCPMachineTemplate

    Microsoft Azure

    AzureMachineTemplate

    Red Hat OpenStack Platform (RHOSP)

    OpenStackMachineTemplate

    VMware vSphere

    VSphereMachineTemplate

    ベアメタル

    Metal3MachineTemplate

    2
    マシンテンプレートの名前を指定します。
    3
    環境の詳細を指定します。これらのパラメーターはプロバイダー固有です。詳細は、各プロバイダーの Cluster API マシンテンプレートのサンプル YAML を参照してください。
  2. 次のコマンドを実行して、マシンテンプレート CR を作成します。

    $ oc create -f <machine_template_resource_file>.yaml
    Copy to Clipboard Toggle word wrap

検証

  • 次のコマンドを実行して、マシンテンプレート CR が作成されたことを確認します。

    $ oc get <machine_template_kind> -n openshift-cluster-api
    Copy to Clipboard Toggle word wrap

    <machine_template_kind> は、プラットフォームに対応する値です。

    出力例

    NAME              AGE
    <template_name>   77m
    Copy to Clipboard Toggle word wrap

11.2.1.2. Cluster API のコンピュートマシンセットの作成

Cluster API を使用して、選択した特定のワークロードのマシンコンピュートリソースを動的に管理するマシンセットを作成できます。

前提条件

  • OpenShift Container Platform クラスターをデプロイした。
  • Cluster API の使用を有効化している。
  • cluster-admin 権限を持つアカウントを使用してクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。
  • マシンテンプレートリソースを作成している。

手順

  1. 以下のような YAML ファイルを作成します。この手順では、ファイル名の例として <machine_set_resource_file>.yaml を使用します。

    apiVersion: cluster.x-k8s.io/v1beta1
    kind: MachineSet
    metadata:
      name: <machine_set_name> 
    1
    
      namespace: openshift-cluster-api
    spec:
      clusterName: <cluster_name> 
    2
    
      replicas: 1
      selector:
        matchLabels:
          test: example
      template:
        metadata:
          labels:
            test: example
        spec: 
    3
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    コンピュートマシンセットの名前を指定します。通常、この値のパターンは、クラスター ID、マシンのロール、およびリージョンにより、<cluster_name>-<role>-<region> という形で構成されます。
    2
    クラスターの名前を指定します。次のコマンドを実行して、クラスター ID 値を取得します。
    $  oc get infrastructure cluster \
       -o jsonpath='{.status.infrastructureName}'
    Copy to Clipboard Toggle word wrap
    3
    環境の詳細を指定します。これらのパラメーターはプロバイダー固有です。詳細は、各プロバイダーの Cluster API コンピュートマシンセットのサンプル YAML を参照してください。
  2. 次のコンピュートコマンドを実行して、マシンセット CR を作成します。

    $ oc create -f <machine_set_resource_file>.yaml
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、コンピュートマシンセット CR が作成されたことを確認します。

    $ oc get machineset.cluster.x-k8s.io -n openshift-cluster-api
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                 CLUSTER          REPLICAS   READY   AVAILABLE   AGE   VERSION
    <machine_set_name>   <cluster_name>   1          1       1           17m
    Copy to Clipboard Toggle word wrap

    新しいコンピュートマシンセットが利用可能な場合、REPLICASAVAILABLE の値が一致します。コンピュートマシンセットが使用できない場合は、数分待ってからコマンドを再実行してください。

検証

  • コンピュートマシンセットが必要な設定に従ってマシンを作成していることを確認するには、次のコマンドを実行して、クラスター内のマシンとノードのリストを確認します。

    • Cluster API マシンのリストを表示します。

      $ oc get machine.cluster.x-k8s.io -n openshift-cluster-api
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                             CLUSTER          NODENAME                                 PROVIDERID      PHASE     AGE     VERSION
      <machine_set_name>-<string_id>   <cluster_name>   <ip_address>.<region>.compute.internal   <provider_id>   Running   8m23s
      Copy to Clipboard Toggle word wrap

    • ノードのリストを表示します。

      $ oc get node
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                                       STATUS   ROLES    AGE     VERSION
      <ip_address_1>.<region>.compute.internal   Ready    worker   5h14m   v1.28.5
      <ip_address_2>.<region>.compute.internal   Ready    master   5h19m   v1.28.5
      <ip_address_3>.<region>.compute.internal   Ready    worker   7m      v1.28.5
      Copy to Clipboard Toggle word wrap

11.2.2. Machine API リソースを Cluster API リソースに移行する

Machine API リソースから Cluster API リソースへの移行をサポートするクラスターでは、双方向同期コントローラーが openshift-cluster-api namespace に次の Cluster API リソースを作成します。

  • コンピュートマシンセットに対応する 1 つ以上のマシンテンプレート。
  • 3 台のコンピュートマシンを管理する 1 つ以上のコンピュートマシンセット。
  • 各 Machine API コンピュートマシンに対応する 1 つ以上の Cluster API コンピュートマシン。
注記

双方向同期コントローラーは、TechPreviewNoUpgrade 機能セットの MachineAPIMigration フィーチャーゲートが有効になっているクラスターでのみ動作します。

これらの Cluster API リソースは、デフォルトの設定オプションを使用するクラスターの openshift-machine-api namespace でインストールプログラムがプロビジョニングするリソースに対応します。Cluster API リソースは、対応する Machine API リソースと同じ名前を持ち、リソースをリスト表示する oc get などのコマンドの出力に表示されます。同期コントローラーは、意図しない調整を防ぐために、プロビジョニングされていない (Paused) 状態で Cluster API リソースを作成します。

サポートされている設定では、正規とみなす API を変更することで、Machine API リソースを同等の Cluster API リソースに移行できます。Machine API リソースを Cluster API へ移行すると、そのリソースの管理は Cluster API に移管されます。

Machine API リソースを Cluster API を使用するように移行することで、実稼働クラスターでの Cluster API の使用を決定する前に、すべてが期待どおりに動作することを確認できます。Machine API リソースを同等の Cluster API リソースに移行した後、新しいリソースを調べて、機能と設定が元の Machine API リソースと一致しているか確認できます。

コンピュートマシンセットの authoritative API を変更しても、コンピュートマシンセットが管理する既存のコンピュートマシンは、元の authoritative API を保持します。その結果、これらの API タイプ間での移行をサポートするクラスターにおいて、コンピュートマシンセットが異なる正規の API を使用するマシンを管理する状態は、正当かつ想定内の事象です。

コンピュートマシンの authoritative API を変更しても、そのマシンを支える基盤となるインフラストラクチャー上のインスタンスは、再作成も再プロビジョニングもされません。ラベル、タグ、taint、またはアノテーションの変更などのインプレース変更は、マシンをサポートする基礎となるインスタンスに対して API グループが行うことができる唯一の変更です。

注記

一部のリソースは、サポートされているインフラストラクチャータイプでのみ移行できます。

Expand
表11.1 サポートされているリソース変換
InfrastructureコンピュートマシンコンピュートマシンセットマシンのヘルスチェックコントロールプレーンマシンセットCluster Autoscaler

AWS

テクノロジープレビュー

テクノロジープレビュー

利用不可

利用不可

利用不可

その他のすべてのインフラストラクチャータイプ

利用不可

利用不可

利用不可

利用不可

利用不可

11.2.2.1. コンピュートマシンの権威ある API タイプ

コンピュートマシンの authoritative API は、それを作成する Machine API コンピュートマシンセット内の .spec.authoritativeAPI フィールドと .spec.template.spec.authoritativeAPI フィールドの値によって異なります。

Expand
表11.2 コンピュートマシンを作成する際の authoritativeAPI フィールド間の相互作用

.spec.authoritativeAPI

ClusterAPI

ClusterAPI

MachineAPI

MachineAPI

.spec.template.spec.authoritativeAPI

ClusterAPI

MachineAPI

MachineAPI

ClusterAPI

新しいコンピュートマシンの authoritativeAPI

ClusterAPI

ClusterAPI

MachineAPI

ClusterAPI

注記

.spec.authoritativeAPI 値が ClusterAPI の場合、Machine API マシンセットは authoritative ではないため、.spec.template.spec.authoritativeAPI 値は使用されません。その結果、Machine API を authoritative として持つコンピュートマシンを作成する唯一の組み合わせは、.spec.authoritativeAPI.spec.template.spec.authoritativeAPI の値が MachineAPI である場合です。

11.2.2.2. Machine API リソースを移行して Cluster API を使用する

個々の Machine API オブジェクトを同等の Cluster API オブジェクトに移行できます。

重要

Machine API リソースを移行して Cluster API を使用する機能は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

前提条件

  • サポートされているインフラストラクチャータイプに OpenShift Container Platform クラスターをデプロイしている。
  • Cluster API の使用を有効化している。
  • TechPreviewNoUpgrade 機能セットで MachineAPIMigration フィーチャーゲートを有効化している。
  • cluster-admin 権限を持つアカウントを使用してクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. 次のコマンドを実行して、Cluster API リソースに移行する Machine API リソースを特定します。

    $ oc get <resource_kind> -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    ここで、<resource_kind> は次のいずれかの値になります。

    machine.machine.openshift.io
    コンピュートまたはコントロールプレーンマシンのリソースの種類の完全修飾名。
    machineset.machine.openshift.io
    コンピュートマシンセットのリソースの種類の完全修飾名。
  2. 次のコマンドを実行してリソース仕様を編集します。

    $ oc edit <resource_kind>/<resource_name> -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

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

    <resource_kind>
    machine.machine.openshift.io を持つコンピュートマシン、または machineset.machine.openshift.io で設定されたコンピュートマシンを指定します。
    <resource_name>
    Cluster API リソースに移行する Machine API リソースの名前を指定します。
  3. リソース仕様で、spec.authoritativeAPI フィールドの値を更新します。

    apiVersion: machine.openshift.io/v1beta1
    kind: <resource_kind> 
    1
    
    metadata:
      name: <resource_name> 
    2
    
      [...]
    spec:
      authoritativeAPI: ClusterAPI 
    3
    
      [...]
    status:
      authoritativeAPI: MachineAPI 
    4
    
      [...]
    Copy to Clipboard Toggle word wrap
    1
    リソースの種類は、リソースの種類によって異なります。たとえば、コンピュートマシンセットのリソースの種類は MachineSet であり、コンピュートマシンのリソースの種類は Machine です。
    2
    移行するリソースの名前。
    3
    このリソースが使用する authoritative API を指定します。たとえば、Machine API リソースの Cluster API への移行を開始するには、ClusterAPI を指定します。
    4
    現在の正規の API の値。この値は、現在このリソースを管理している API を示します。仕様のこの部分の値は変更しないでください。

検証

  • 次のコマンドを実行して、変換のステータスを確認します。

    $ oc -n openshift-machine-api get <resource_kind>/<resource_name> -o json | jq .status.authoritativeAPI
    Copy to Clipboard Toggle word wrap

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

    <resource_kind>
    machine.machine.openshift.io を持つコンピュートマシン、または machineset.machine.openshift.io で設定されたコンピュートマシンを指定します。
    <resource_name>
    Cluster API リソースに移行する Machine API リソースの名前を指定します。
    • 変換の進行中、このコマンドは Migrating という値を返します。この値が長時間続く場合は、openshift-cluster-api namespace の cluster-capi-operator デプロイメントのログをチェックして詳細を確認し、潜在的な問題を特定してください。
    • 変換が完了すると、このコマンドは ClusterAPI の値を返します。

Cluster API コンピュートマシンをデプロイするように Machine API コンピュートマシンセットを設定できます。このプロセスでは、Cluster API コンピュートマシンセットを作成およびスケーリングせずに、Cluster API コンピュートマシンの作成ワークフローをテストできます。

この設定の Machine API コンピュートマシンセットは、authoritative として Cluster API を使用する nonauthoritative Machine API コンピュートマシンを作成します。次に、双方向同期コントローラーは、基盤となるインフラストラクチャーでプロビジョニングする、対応する正規の Cluster API マシンを作成します。

重要

Machine API コンピュートマシンセットを使用して Cluster API コンピュートマシンをデプロイすることは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

前提条件

  • サポートされているインフラストラクチャータイプに OpenShift Container Platform クラスターをデプロイしている。
  • Cluster API の使用を有効化している。
  • TechPreviewNoUpgrade 機能セットで MachineAPIMigration フィーチャーゲートを有効化している。
  • cluster-admin 権限を持つアカウントを使用してクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. 次のコマンドを実行して、クラスター内の Machine API コンピュートマシンセットをリスト表示します。

    $ oc get machineset.machine.openshift.io -n openshift-machine-api
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行してリソース仕様を編集します。

    $ oc edit machineset.machine.openshift.io <machine_set_name> \
      -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    ここで、<machine_set_name> は、Cluster API コンピュートマシンをデプロイするために設定する Machine API コンピュートマシンセットの名前です。

  3. リソース仕様で、spec.template.spec.authoritativeAPI フィールドの値を更新します。

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      [...]
      name: <machine_set_name>
      [...]
    spec:
      authoritativeAPI: MachineAPI 
    1
    
      [...]
      template:
        [...]
        spec:
          authoritativeAPI: ClusterAPI 
    2
    
    status:
      authoritativeAPI: MachineAPI 
    3
    
      [...]
    Copy to Clipboard Toggle word wrap
    1
    Machine API コンピュートマシンセットの変換されていない値。仕様のこの部分の値は変更しないでください。
    2
    ClusterAPI を指定して、Cluster API コンピュートマシンをデプロイするようにコンピュートマシンセットを設定します。
    3
    Machine API コンピュートマシンセットの現在の値。仕様のこの部分の値は変更しないでください。

検証

  1. 次のコマンドを実行して、更新されたコンピュートマシンセットによって管理されているマシンをリスト表示します。

    $ oc get machines.machine.openshift.io \
      -n openshift-machine-api \
      -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
    Copy to Clipboard Toggle word wrap
  2. 更新されたマシンセットによって作成されたマシンの設定が正しいことを確認するには、次のコマンドを実行して、新しいマシンのいずれかの CR の status.authoritativeAPI フィールドを調べます。

    $ oc describe machines.machine.openshift.io <machine_name> \
      -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    Cluster API コンピュートマシンの場合、フィールドの値は ClusterAPI です。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat