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
) がインストールされている。
手順
以下のような YAML ファイルを作成します。この手順では、ファイル名の例として
<machine_template_resource_file>.yaml
を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 を参照してください。
次のコマンドを実行して、マシンテンプレート CR を作成します。
oc create -f <machine_template_resource_file>.yaml
$ oc create -f <machine_template_resource_file>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、マシンテンプレート CR が作成されたことを確認します。
oc get <machine_template_kind> -n openshift-cluster-api
$ oc get <machine_template_kind> -n openshift-cluster-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <machine_template_kind>
は、プラットフォームに対応する値です。出力例
NAME AGE <template_name> 77m
NAME AGE <template_name> 77m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2.1.2. Cluster API のコンピュートマシンセットの作成 リンクのコピーリンクがクリップボードにコピーされました!
Cluster API を使用して、選択した特定のワークロードのマシンコンピュートリソースを動的に管理するマシンセットを作成できます。
前提条件
- OpenShift Container Platform クラスターをデプロイした。
- Cluster API の使用を有効化している。
-
cluster-admin
権限を持つアカウントを使用してクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。 - マシンテンプレートリソースを作成している。
手順
以下のような YAML ファイルを作成します。この手順では、ファイル名の例として
<machine_set_resource_file>.yaml
を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- コンピュートマシンセットの名前を指定します。通常、この値のパターンは、クラスター ID、マシンのロール、およびリージョンにより、
<cluster_name>-<role>-<region>
という形で構成されます。 - 2
- クラスターの名前を指定します。次のコマンドを実行して、クラスター ID 値を取得します。
oc get infrastructure cluster \ -o jsonpath='{.status.infrastructureName}'
$ oc get infrastructure cluster \ -o jsonpath='{.status.infrastructureName}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 3
- 環境の詳細を指定します。これらのパラメーターはプロバイダー固有です。詳細は、各プロバイダーの Cluster API コンピュートマシンセットのサンプル YAML を参照してください。
次のコンピュートコマンドを実行して、マシンセット CR を作成します。
oc create -f <machine_set_resource_file>.yaml
$ oc create -f <machine_set_resource_file>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、コンピュートマシンセット CR が作成されたことを確認します。
oc get machineset.cluster.x-k8s.io -n openshift-cluster-api
$ oc get machineset.cluster.x-k8s.io -n openshift-cluster-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CLUSTER REPLICAS READY AVAILABLE AGE VERSION <machine_set_name> <cluster_name> 1 1 1 17m
NAME CLUSTER REPLICAS READY AVAILABLE AGE VERSION <machine_set_name> <cluster_name> 1 1 1 17m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいコンピュートマシンセットが利用可能な場合、
REPLICAS
とAVAILABLE
の値が一致します。コンピュートマシンセットが使用できない場合は、数分待ってからコマンドを再実行してください。
検証
コンピュートマシンセットが必要な設定に従ってマシンを作成していることを確認するには、次のコマンドを実行して、クラスター内のマシンとノードのリストを確認します。
Cluster API マシンのリストを表示します。
oc get machine.cluster.x-k8s.io -n openshift-cluster-api
$ oc get machine.cluster.x-k8s.io -n openshift-cluster-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION <machine_set_name>-<string_id> <cluster_name> <ip_address>.<region>.compute.internal <provider_id> Running 8m23s
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 Copied! Toggle word wrap Toggle overflow ノードのリストを表示します。
oc get node
$ oc get node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
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
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 Copied! Toggle word wrap Toggle overflow
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 グループが行うことができる唯一の変更です。
一部のリソースは、サポートされているインフラストラクチャータイプでのみ移行できます。
Infrastructure | コンピュートマシン | コンピュートマシンセット | マシンのヘルスチェック | コントロールプレーンマシンセット | Cluster Autoscaler |
---|---|---|---|---|---|
AWS | テクノロジープレビュー | テクノロジープレビュー | 利用不可 | 利用不可 | 利用不可 |
その他のすべてのインフラストラクチャータイプ | 利用不可 | 利用不可 | 利用不可 | 利用不可 | 利用不可 |
11.2.2.1. コンピュートマシンの権威ある API タイプ リンクのコピーリンクがクリップボードにコピーされました!
コンピュートマシンの authoritative API は、それを作成する Machine API コンピュートマシンセット内の .spec.authoritativeAPI
フィールドと .spec.template.spec.authoritativeAPI
フィールドの値によって異なります。
|
|
|
|
|
|
|
|
|
|
新しいコンピュートマシンの |
|
|
|
|
.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
) がインストールされている。
手順
次のコマンドを実行して、Cluster API リソースに移行する Machine API リソースを特定します。
oc get <resource_kind> -n openshift-machine-api
$ oc get <resource_kind> -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
<resource_kind>
は次のいずれかの値になります。machine.machine.openshift.io
- コンピュートまたはコントロールプレーンマシンのリソースの種類の完全修飾名。
machineset.machine.openshift.io
- コンピュートマシンセットのリソースの種類の完全修飾名。
次のコマンドを実行してリソース仕様を編集します。
oc edit <resource_kind>/<resource_name> -n openshift-machine-api
$ oc edit <resource_kind>/<resource_name> -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<resource_kind>
-
machine.machine.openshift.io
を持つコンピュートマシン、またはmachineset.machine.openshift.io
で設定されたコンピュートマシンを指定します。 <resource_name>
- Cluster API リソースに移行する Machine API リソースの名前を指定します。
リソース仕様で、
spec.authoritativeAPI
フィールドの値を更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、変換のステータスを確認します。
oc -n openshift-machine-api get <resource_kind>/<resource_name> -o json | jq .status.authoritativeAPI
$ oc -n openshift-machine-api get <resource_kind>/<resource_name> -o json | jq .status.authoritativeAPI
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<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
の値を返します。
11.2.2.3. Machine API コンピュートマシンセットを使用して Cluster API コンピュートマシンをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
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
) がインストールされている。
手順
次のコマンドを実行して、クラスター内の Machine API コンピュートマシンセットをリスト表示します。
oc get machineset.machine.openshift.io -n openshift-machine-api
$ oc get machineset.machine.openshift.io -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してリソース仕様を編集します。
oc edit machineset.machine.openshift.io <machine_set_name> \ -n openshift-machine-api
$ oc edit machineset.machine.openshift.io <machine_set_name> \ -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
<machine_set_name>
は、Cluster API コンピュートマシンをデプロイするために設定する Machine API コンピュートマシンセットの名前です。リソース仕様で、
spec.template.spec.authoritativeAPI
フィールドの値を更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、更新されたコンピュートマシンセットによって管理されているマシンをリスト表示します。
oc get machines.machine.openshift.io \ -n openshift-machine-api \ -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
$ oc get machines.machine.openshift.io \ -n openshift-machine-api \ -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新されたマシンセットによって作成されたマシンの設定が正しいことを確認するには、次のコマンドを実行して、新しいマシンのいずれかの CR の
status.authoritativeAPI
フィールドを調べます。oc describe machines.machine.openshift.io <machine_name> \ -n openshift-machine-api
$ oc describe machines.machine.openshift.io <machine_name> \ -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cluster API コンピュートマシンの場合、フィールドの値は
ClusterAPI
です。