2.2. コンピュートノードの管理
本書では、Red Hat OpenShift Service on AWS (ROSA) でコンピュート (ワーカーとも呼ばれる) ノードを管理する方法について説明します。
コンピュートノードの変更の大半は、マシンプールで設定されます。マシンプール は、管理を容易にするために、同じ設定を持つクラスター内のコンピュートノードのグループです。
スケーリング、ノードラベルの追加、テイントの追加などのマシンプール設定オプションを編集できます。
2.2.1. マシンセットの作成
デフォルトのマシンプールは、Red Hat OpenShift Service on AWS (ROSA) クラスターのインストール時に作成されます。インストール後に、OpenShift Cluster Manager または ROSA CLI (rosa
) を使用して、クラスターの追加のマシンプールを作成できます。
2.2.1.1. OpenShift Cluster Manager を使用したマシンプールの作成
OpenShift Cluster Manager を使用して、Red Hat OpenShift Service on AWS (ROSA) クラスターに追加のマシンプールを作成できます。
前提条件
- ROSA クラスターを作成している。
手順
- OpenShift Cluster Manager Hybrid Cloud Console に移動し、クラスターを選択します。
- Machine pools タブで、Add machine pool をクリックします。
- マシンプール名 を追加します。
ドロップダウンメニューから Worker node instance type を選択します。インスタンスタイプは、マシンプール内の各コンピュートノードの仮想 CPU およびメモリー割り当てを定義します。
注記プールを作成した後に、マシンプールのインスタンスタイプを変更することはできません。
オプション: マシンプールの自動スケーリングを設定します。
- Enable autoscaling を選択し、デプロイメントのニーズを満たすためにマシンプール内のマシン数を自動的にスケーリングします。
自動スケーリングの最小および最大のノード数制限を設定します。Cluster Autoscaler は、指定する制限を超えてマシンプールノード数を減らしたり、増やしたりできません。
- 単一アベイラビリティーゾーンを使用してクラスターをデプロイした場合は、最小および最大のノード数 を設定します。これは、アベイラビリティーゾーンのコンピュートノードの最小および最大の制限を定義します。
複数のアベイラビリティーゾーンを使用してクラスターをデプロイした場合は、Minimum nodes per zone および Maximum nodes per zone を設定します。これは、ゾーンごとの最小および最大のコンピュート制限を定義します。
注記または、マシンプールの作成後にマシンプールの自動スケーリングを設定できます。
自動スケーリングを有効にしていない場合は、コンピュートノードの数を選択します。
- 単一アベイラビリティーゾーンを使用してクラスターをデプロイした場合は、ドロップダウンメニューから ワーカーノード数 を選択します。これは、ゾーンのマシンプールにプロビジョニングするコンピュートノードの数を定義します。
- 複数のアベイラビリティーゾーンを使用してクラスターをデプロイした場合は、ドロップダウンメニューから ワーカーノードの数 (ゾーンごと) を選択します。これは、ゾーンごとにマシンプールにプロビジョニングするコンピュートノードの数を定義します。
オプション: マシンプールのノードラベルおよびテイントを追加します。
- Edit node labels and taints メニューを展開します。
- Node labels で、ノードラベルの Key および Value のエントリーを追加します。
- Taints で、テイントの Key および Value エントリーを追加します。
テイントごとに、ドロップダウンメニューから Effect を選択します。使用できるオプションには、
NoSchedule
、PreferNoSchedule
、およびNoExecute
が含まれます。注記または、マシンプールの作成後にノードラベルおよびテイントを追加できます。
オプション: マシンプールを保証なしの AWS Spot インスタンスとしてデプロイするように設定するには、Amazon EC2 Spot インスタンスを使用します。
- Use Amazon EC2 Spot Instances を選択します。
オンデマンドのインスタンス価格を使用するには、Use On-Demand instance price を選択したままにします。または、Set maximum price を選択して、Spot インスタンスの 1 時間ごとの最大価格を定義します。
Amazon EC2 Spot インスタンスの詳細は、AWS のドキュメント を参照してください。
重要Amazon EC2 Spot インスタンスはいつでも中断する可能性があります。Amazon EC2 Spot インスタンスは、中断に対応できるワークロードにのみ使用します。
注記マシンプールに Use Amazon EC2 Spot Instances を選択すると、マシンプールの作成後にオプションを無効にすることはできません。
- Add machine pool をクリックしてマシンプールを作成します。
検証
- マシンプールが Machine pools ページに表示され、設定が想定どおりに表示されていることを確認します。
2.2.1.2. ROSA CLI を使用したマシンプールの作成
ROSA CLI (rosa
) を使用して、Red Hat OpenShift Service on AWS (ROSA) クラスターの追加のマシンプールを作成できます。
前提条件
-
ワークステーションに最新の AWS (
aws
)、ROSA (rosa
)、OpenShift (oc
) の CLI をインストールして設定している。 -
rosa
CLI を使用して Red Hat アカウントにログインしている。 - ROSA クラスターを作成している。
手順
自動スケーリングを使用しないマシンプールを追加するには、マシンプールを作成し、インスタンスタイプ、コンピュート (ワーカーとも呼ばれる) ノード数、およびノードラベルを定義します。
$ rosa create machinepool --cluster=<cluster-name> \ --name=<machine_pool_id> \ 1 --replicas=<replica_count> \ 2 --instance-type=<instance_type> \ 3 --labels=<key>=<value>,<key>=<value> \ 4 --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ 5 --use-spot-instances \ 6 --spot-max-price=0.5 7
- 1
- マシンプールの名前を指定します。
<machine_pool_id>
をマシンプールの名前に置き換えます。 - 2
- プロビジョニングするコンピュートノードの数を指定します。単一アベイラビリティーゾーンを使用して ROSA をデプロイしている場合は、ゾーンのマシンプールにプロビジョニングするコンピュートノードの数を定義します。複数のアベイラビリティーゾーンを使用してクラスターをデプロイしている場合は、全ゾーンでプロビジョニングするコンピュートノードの数を定義し、その数は 3 の倍数である必要があります。
--replicas
引数は、自動スケーリングが設定されていない場合に必要です。 - 3
- オプション: マシンプールのコンピュートノードのインスタンスタイプを設定します。インスタンスタイプは、プール内の各コンピュートノードの仮想 CPU およびメモリー割り当てを定義します。
<instance_type>
をインスタンスタイプに置き換えます。デフォルトはm5.xlarge
です。プールを作成した後に、マシンプールのインスタンスタイプを変更することはできません。 - 4
- オプション: マシンプールのラベルを定義します。
<key>=<value>,<key>=<value>
は、キーと値のペアのコンマ区切りリストに置き換えます (例:--labels=key1=value1,key2=value2
)。 - 5
- オプション: マシンプールのテイントを定義します。
<key>=<value>:<effect>,<key>=<value>:<effect>
は、各テイントのキー、値、および影響に置き換えます (例:--taints=key1=value1:NoSchedule,key2=value2:NoExecute
)。利用可能な影響には、NoSchedule
、PreferNoSchedule
、およびNoExecute
が含まれます。 - 6
- オプション: マシンプールは、保証なしの AWS Spot インスタンスとしてデプロイするように設定します。詳細は、AWS ドキュメントの Amazon EC2 Spot Instances を参照してください。マシンプールに Use Amazon EC2 Spot Instances を選択すると、マシンプールの作成後にオプションを無効にすることはできません。
- 7
- オプション: Spot インスタンスを使用する場合は、この引数を指定して Spot インスタンスの 1 時間ごとの最大価格を定義できます。この引数が指定されていない場合は、オンデマンドの価格が使用されます。
重要Amazon EC2 Spot インスタンスはいつでも中断する可能性があります。Amazon EC2 Spot インスタンスは、中断に対応できるワークロードにのみ使用します。
以下の例では、
m5.xlarge
インスタンスタイプを使用し、コンピュートノードレプリカが 2 つ含まれるmymachinepool
という名前のマシンプールを作成します。この例では、ワークロード固有のラベルも 2 つ追加します。$ rosa create machinepool --cluster=mycluster --name=mymachinepool --replicas=2 --instance-type=m5.xlarge --labels=app=db,tier=backend
出力例
I: Machine pool 'mymachinepool' created successfully on cluster 'mycluster' I: To view all machine pools, run 'rosa list machinepools -c mycluster'
自動スケーリングを使用するマシンプールを追加するには、マシンプールを作成して、自動スケーリング設定、インスタンスタイプ、およびノードラベルを定義します。
$ rosa create machinepool --cluster=<cluster-name> \ --name=<machine_pool_id> \ 1 --enable-autoscaling \ 2 --min-replicas=<minimum_replica_count> \ 3 --max-replicas=<maximum_replica_count> \ 4 --instance-type=<instance_type> \ 5 --labels=<key>=<value>,<key>=<value> \ 6 --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ 7 --use-spot-instances \ 8 --spot-max-price=0.5 9
- 1
- マシンプールの名前を指定します。
<machine_pool_id>
をマシンプールの名前に置き換えます。 - 2
- マシンプールの自動スケーリングを有効にし、デプロイメントのニーズに対応します。
- 3 4
- コンピュートノードの最小および最大の制限を定義します。Cluster Autoscaler は、指定する制限を超えてマシンプールノード数を減らしたり、増やしたりできません。単一アベイラビリティーゾーンを使用して ROSA をデプロイしている場合、
--min-replicas
引数および--max-replicas
引数は、ゾーンのマシンプールに自動スケーリング制限を定義します。複数のアベイラビリティーゾーンを使用してクラスターをデプロイしている場合に、すべてのゾーンにおける自動スケーリングの制限を引数で定義し、その数は 3 の倍数である必要があります。 - 5
- オプション: マシンプールのコンピュートノードのインスタンスタイプを設定します。インスタンスタイプは、プール内の各コンピュートノードの仮想 CPU およびメモリー割り当てを定義します。
<instance_type>
をインスタンスタイプに置き換えます。デフォルトはm5.xlarge
です。プールを作成した後に、マシンプールのインスタンスタイプを変更することはできません。 - 6
- オプション: マシンプールのラベルを定義します。
<key>=<value>,<key>=<value>
は、キーと値のペアのコンマ区切りリストに置き換えます (例:--labels=key1=value1,key2=value2
)。 - 7
- オプション: マシンプールのテイントを定義します。
<key>=<value>:<effect>,<key>=<value>:<effect>
は、各テイントのキー、値、および影響に置き換えます (例:--taints=key1=value1:NoSchedule,key2=value2:NoExecute
)。利用可能な影響には、NoSchedule
、PreferNoSchedule
、およびNoExecute
が含まれます。 - 8
- オプション: マシンプールは、保証なしの AWS Spot インスタンスとしてデプロイするように設定します。詳細は、AWS ドキュメントの Amazon EC2 Spot Instances を参照してください。マシンプールに Use Amazon EC2 Spot Instances を選択すると、マシンプールの作成後にオプションを無効にすることはできません。
- 9
- オプション: Spot インスタンスを使用する場合は、この引数を指定して Spot インスタンスの 1 時間ごとの最大価格を定義できます。この引数が指定されていない場合は、オンデマンドの価格が使用されます。
重要Amazon EC2 Spot インスタンスはいつでも中断する可能性があります。Amazon EC2 Spot インスタンスは、中断に対応できるワークロードにのみ使用します。
以下の例では、
m5.xlarge
インスタンスタイプを使用し、自動スケーリングが有効になっているmymachinepool
という名前のマシンプールを作成します。コンピュートノードの最小制限は 3 で、最大制限は全体で 6 です。この例では、ワークロード固有のラベルも 2 つ追加します。$ rosa create machinepool --cluster=mycluster --name=mymachinepool --enable-autoscaling --min-replicas=3 --max-replicas=6 --instance-type=m5.xlarge --labels=app=db,tier=backend
出力例
I: Machine pool 'mymachinepool' created successfully on cluster 'mycluster' I: To view all machine pools, run 'rosa list machinepools -c mycluster'
検証
クラスターで利用可能なマシンプールを一覧表示します。
$ rosa list machinepools --cluster=<cluster_name>
出力例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES SPOT INSTANCES Default No 3 m5.xlarge us-east-1a, us-east-1b, us-east-1c N/A mymachinepool Yes 3-6 m5.xlarge app=db, tier=backend us-east-1a, us-east-1b, us-east-1c No
- マシンプールが出力に含まれ、設定が想定どおりであることを確認します。
関連情報
-
rosa create machinepool
サブコマンドで利用可能な引数の詳細な一覧は、rosa CLI を使用したオブジェクトの管理 を参照してください。