13.3. Cluster API によるマシンの管理
Cluster API を使用したマシン管理は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
13.3.1. Cluster API のマシンテンプレートの変更
YAML マニフェストファイルを変更し、OpenShift CLI (oc
) を使用して適用することで、クラスターのマシンテンプレートリソースを更新できます。
前提条件
- Cluster API を使用する OpenShift Container Platform クラスターをデプロイした。
-
cluster-admin
権限を持つアカウントを使用してクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。
手順
次のコマンドを実行して、クラスターのマシンテンプレートリソースをリスト表示します。
$ oc get <machine_template_kind> 1
- 1
- お使いのプラットフォームに応じた値を指定します。次の値が有効です。
-
AWSMachineTemplate
: クラスターが Amazon Web Services (AWS) 上で実行されている場合。 -
GCPMachineTemplate
: クラスターが Google Cloud Platform (GCP) 上で実行されている場合。 -
VSphereMachineTemplate
: クラスターが VMware vSphere で実行されている場合。
-
出力例
NAME AGE <template_name> 77m
次のコマンドを実行して、クラスターのマシンテンプレートリソースを編集可能なファイルに書き込みます。
$ oc get <template_name> -o yaml > <template_name>.yaml
<template_name>
は、クラスターのマシンテンプレートリソースの名前です。-
<template_name>.yaml
ファイルのコピーを作成し、別の名前を付けます。この手順では、ファイル名の例として<modified_template_name>.yaml
を使用します。 テキストエディターを使用し、
<modified_template_name>.yaml
ファイルに変更を加えて、クラスターの更新されたマシンテンプレートリソースを定義します。マシンテンプレートリソースを編集するときは、次の点に注意してください。-
spec
スタンザ内のパラメーターはプロバイダー固有です。詳細は、各プロバイダーの Cluster API マシンテンプレートのサンプル YAML を参照してください。 metadata.name
パラメーターには、既存の値とは異なる値を使用する必要があります。重要このテンプレートを参照する Cluster API コンピュートマシンセットがある場合、
spec.template.spec.infrastructureRef.name
パラメーターを、新しいマシンテンプレートリソースのmetadata.name
値と一致するように更新する必要があります。
-
次のコマンドを実行して、マシンテンプレート CR を適用します。
$ oc apply -f <modified_template_name>.yaml 1
- 1
- 新しい名前を付けた編集済み YAML ファイルを使用します。
次のステップ
-
このテンプレートを参照する Cluster API コンピュートマシンセットがある場合、
spec.template.spec.infrastructureRef.name
パラメーターを、新しいマシンテンプレートリソースのmetadata.name
値と一致するように更新します。詳細は、「CLI を使用してコンピュートマシンセットを変更する」を参照してください。
13.3.2. CLI を使用してコンピュートマシンセットを変更する
CLI を使用してコンピュートマシンセットの設定を変更し、その変更をクラスター内のマシンに伝播することができます。
コンピュートマシンセットの設定を更新することで、機能を有効にしたり、その設定によって作成されるマシンのプロパティーを変更したりできます。コンピュートマシンセットを変更すると、その変更は、更新された MachineSet
カスタムリソース (CR) を保存した後に作成されたコンピュートマシンにのみ適用されます。この変更は既存のマシンには影響しません。
基盤となるクラウドプロバイダーで行われた変更は、Machine
または MachineSet
CR には反映されません。クラスターによって管理されるインフラストラクチャーのインスタンス設定を調整するには、クラスター側のリソースを使用してください。
コンピュートマシンセットをスケーリングしてレプリカの数を 2 倍にし、その後、元のレプリカの数までスケールダウンすることで、更新した設定を反映した新しいマシンに既存のマシンを置き換えることができます。
他の変更を加えずに、コンピュートマシンセットをスケーリングする必要がある場合、マシンを削除する必要はありません。
デフォルトでは、OpenShift Container Platform ルーター Pod はコンピュートマシンにデプロイされます。ルーターは Web コンソールなどの一部のクラスターリソースにアクセスすることが必要であるため、ルーター Pod をまず再配置しない限り、コンピュートマシンセットを 0
にスケーリングできません。
この手順の出力例では、AWS クラスターの値を使用します。
前提条件
- OpenShift Container Platform クラスターが Cluster API を使用している。
-
OpenShift CLI (
oc
) を使用して、管理者としてクラスターにログインしている。
手順
以下のコマンドを実行して、クラスター内のコンピュートマシンセットを一覧表示します。
$ oc get machinesets.cluster.x-k8s.io -n openshift-cluster-api
出力例
NAME CLUSTER REPLICAS READY AVAILABLE AGE VERSION <compute_machine_set_name_1> <cluster_name> 1 1 1 26m <compute_machine_set_name_2> <cluster_name> 1 1 1 26m
次のコマンドを実行して、コンピュートマシンセットを編集します。
$ oc edit machinesets.cluster.x-k8s.io <machine_set_name> \ -n openshift-cluster-api
spec.replicas
フィールドの値をメモします。この値は、変更を適用するためにコンピュートマシンセットをスケーリングする際に必要になるためです。apiVersion: cluster.x-k8s.io/v1beta1 kind: MachineSet metadata: name: <machine_set_name> namespace: openshift-cluster-api spec: replicas: 2 1 # ...
- 1
- この手順例では、
replicas
値が2
のコンピュートマシンセットを示しています。
- 必要な設定オプションを使用してコンピュートマシンセット CR を更新し、変更を保存します。
次のコマンドを実行して、更新されたコンピュートマシンセットによって管理されているマシンをリスト表示します。
$ oc get machines.cluster.x-k8s.io \ -n openshift-cluster-api \ -l cluster.x-k8s.io/set-name=<machine_set_name>
AWS クラスターの出力例
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION <machine_name_original_1> <cluster_name> <original_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 4h <machine_name_original_2> <cluster_name> <original_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 4h
次のコマンドを実行して、更新されたコンピュートマシンセットで管理されるマシンごとに
delete
アノテーションを設定します。$ oc annotate machines.cluster.x-k8s.io/<machine_name_original_1> \ -n openshift-cluster-api \ cluster.x-k8s.io/delete-machine="true"
代わりとなるマシンを新しい設定で作成するために、次のコマンドを実行して、コンピュートマシンセットをレプリカ数の 2 倍にスケーリングします。
$ oc scale --replicas=4 \1 machinesets.cluster.x-k8s.io <machine_set_name> \ -n openshift-cluster-api
- 1
- 元の例の値
2
は 2 倍の4
になります。
次のコマンドを実行して、更新されたコンピュートマシンセットによって管理されているマシンをリスト表示します。
$ oc get machines.cluster.x-k8s.io \ -n openshift-cluster-api \ -l cluster.x-k8s.io/set-name=<machine_set_name>
AWS クラスターの出力例
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION <machine_name_original_1> <cluster_name> <original_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 4h <machine_name_original_2> <cluster_name> <original_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 4h <machine_name_updated_1> <cluster_name> <updated_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Provisioned 55s <machine_name_updated_2> <cluster_name> <updated_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Provisioning 55s
新しいマシンが
Running
フェーズにある場合、コンピュートマシンセットを元のレプリカ数にスケーリングできます。古い設定で作成されたマシンを削除するために、次のコマンドを実行して、コンピュートマシンセットを元のレプリカ数にスケーリングします。
$ oc scale --replicas=2 \1 machinesets.cluster.x-k8s.io <machine_set_name> \ -n openshift-cluster-api
- 1
- 元の例の値は
2
です。
検証
更新されたマシンセットによって作成されたマシンの設定が正しいことを確認するには、次のコマンドを実行して、新しいマシンの 1 つで CR の関連フィールドを調べます。
$ oc describe machines.cluster.x-k8s.io <machine_name_updated_1> \ -n openshift-cluster-api
設定が更新されていないコンピュートマシンが削除されたことを確認するには、次のコマンドを実行して、更新されたコンピュートマシンセットによって管理されているマシンをリスト表示します。
$ oc get machines.cluster.x-k8s.io \ -n openshift-cluster-api \ cluster.x-k8s.io/set-name=<machine_set_name>
AWS クラスターの削除進行中の出力例
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION <machine_name_original_1> <cluster_name> <original_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m <machine_name_original_2> <cluster_name> <original_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m <machine_name_updated_1> <cluster_name> <updated_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m <machine_name_updated_2> <cluster_name> <updated_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m
AWS クラスターの削除完了時の出力例
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION <machine_name_updated_1> <cluster_name> <updated_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m <machine_name_updated_2> <cluster_name> <updated_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m