5.3. ワーカーノードの調整
デプロイメント時にワーカーノードのサイズを誤って設定した場合には、1 つ以上の新規コンピュートマシンセットを作成してそれらをスケールアップしてから、元のコンピュートマシンセットを削除する前にスケールダウンしてこれらのワーカーノードを調整します。
5.3.1. コンピュートマシンセットとマシン設定プールの相違点について
					MachineSet オブジェクトは、クラウドまたはマシンプロバイダーに関する OpenShift Container Platform ノードを記述します。
				
					MachineConfigPool オブジェクトにより、MachineConfigController コンポーネントがアップグレードのコンテキストでマシンのステータスを定義し、提供できるようになります。
				
					MachineConfigPool オブジェクトにより、ユーザーはマシン設定プールの OpenShift Container Platform ノードにアップグレードをデプロイメントする方法を設定できます。
				
					NodeSelector オブジェクトは MachineSet オブジェクトへの参照に置き換えることができます。
				
5.3.2. コンピュートマシンセットの手動スケーリング
コンピュートマシンセットのマシンのインスタンスを追加したり、削除したりする必要がある場合、コンピュートマシンセットを手動でスケーリングできます。
このガイダンスは、完全に自動化された installer-provisioned infrastructure のインストールに関連します。user-provisioned infrastructure のカスタマイズされたインストールにはコンピュートマシンセットがありません。
前提条件
- 
							OpenShift Container Platform クラスターおよび ocコマンドラインをインストールすること。
- 
							cluster-adminパーミッションを持つユーザーとして、ocにログインする。
手順
- 次のコマンドを実行して、クラスター内のコンピュートマシンセットを表示します。 - oc get machinesets.machine.openshift.io -n openshift-machine-api - $ oc get machinesets.machine.openshift.io -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - コンピュートマシンセットは - <clusterid>-worker-<aws-region-az>の形式で一覧表示されます。
- 次のコマンドを実行して、クラスター内のコンピュートマシンを表示します。 - oc get machines.machine.openshift.io -n openshift-machine-api - $ oc get machines.machine.openshift.io -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、削除するコンピュートマシンに注釈を設定します。 - oc annotate machines.machine.openshift.io/<machine_name> -n openshift-machine-api machine.openshift.io/delete-machine="true" - $ oc annotate machines.machine.openshift.io/<machine_name> -n openshift-machine-api machine.openshift.io/delete-machine="true"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のいずれかのコマンドを実行して、コンピュートマシンセットをスケーリングします。 - oc scale --replicas=2 machinesets.machine.openshift.io <machineset> -n openshift-machine-api - $ oc scale --replicas=2 machinesets.machine.openshift.io <machineset> -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - または、以下を実行します。 - oc edit machinesets.machine.openshift.io <machineset> -n openshift-machine-api - $ oc edit machinesets.machine.openshift.io <machineset> -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow ヒント- または、以下の YAML を適用してコンピュートマシンセットをスケーリングすることもできます。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - コンピュートマシンセットをスケールアップまたはスケールダウンできます。新規マシンが利用可能になるまで数分の時間がかかります。 重要- デフォルトでは、マシンコントローラーは、成功するまでマシンによってサポートされるノードを drain しようとします。場合によっては、drain 操作が成功しない可能性があります。たとえば、Pod Disruption Budget が間違っている場合などです。drain 操作が失敗した場合、マシンコントローラーはマシンの削除を続行できません。 - 特定のマシンの - machine.openshift.io/exclude-node-drainingにアノテーションを付けると、ノードの drain を省略できます。
検証
- 次のコマンドを実行して、目的のマシンが削除されたことを確認します。 - oc get machines.machine.openshift.io - $ oc get machines.machine.openshift.io- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.3.3. コンピュートマシンセットの削除ポリシー
					Random、Newest、および Oldest は 3 つのサポートされる削除オプションです。デフォルトは Random です。これは、コンピュートマシンセットのスケールダウン時にランダムなマシンが選択され、削除されることを意味します。削除ポリシーは、特定のコンピュートマシンセットを変更し、ユースケースに基づいて設定できます。
				
spec: deletePolicy: <delete_policy> replicas: <desired_replica_count>
spec:
  deletePolicy: <delete_policy>
  replicas: <desired_replica_count>
					削除に関する特定のマシンの優先順位は、削除ポリシーに関係なく、関連するマシンにアノテーション machine.openshift.io/delete-machine=true を追加して設定できます。
				
						デフォルトで、OpenShift Container Platform ルーター Pod はワーカーにデプロイされます。ルーターは Web コンソールなどの一部のクラスターリソースにアクセスすることが必要であるため、ルーター Pod をまず再配置しない限り、ワーカーのコンピュートマシンセットを 0 にスケーリングできません。
					
カスタムのコンピュートマシンセットは、サービスを特定のノードサービスで実行し、それらのサービスがワーカーのコンピュートマシンセットのスケールダウン時にコントローラーによって無視されるようにする必要があるユースケースで使用できます。これにより、サービスの中断が回避されます。
5.3.4. クラスタースコープのデフォルトノードセレクターの作成
クラスター内の作成されたすべての Pod を特定のノードに制限するために、デフォルトのクラスタースコープのノードセレクターをノード上のラベルと共に Pod で使用することができます。
クラスタースコープのノードセレクターを使用する場合、クラスターで Pod を作成すると、OpenShift Container Platform はデフォルトのノードセレクターを Pod に追加し、一致するラベルのあるノードで Pod をスケジュールします。
スケジューラー Operator カスタムリソース (CR) を編集して、クラスタースコープのノードセレクターを設定します。ラベルをノード、コンピュートマシンセット、またはマシン設定に追加します。コンピュートマシンセットにラベルを追加すると、ノードまたはマシンが停止した場合に、新規ノードにそのラベルが追加されます。ノードまたはマシン設定に追加されるラベルは、ノードまたはマシンが停止すると維持されません。
Pod にキーと値のペアを追加できます。ただし、デフォルトキーの異なる値を追加することはできません。
手順
デフォルトのクラスタースコープのセレクターを追加するには、以下を実行します。
- スケジューラー Operator CR を編集して、デフォルトのクラスタースコープのノードクラスターを追加します。 - oc edit scheduler cluster - $ oc edit scheduler cluster- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ノードセレクターを含むスケジューラー Operator CR のサンプル - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 適切な<key>:<value>ペアが設定されたノードセレクターを追加します。
 - この変更を加えた後に、 - openshift-kube-apiserverプロジェクトの Pod の再デプロイを待機します。これには数分の時間がかかる場合があります。デフォルトのクラスター全体のノードセレクターは、Pod の再起動まで有効になりません。
- コンピュートマシンセットを使用するか、ノードを直接編集してラベルをノードに追加します。 - コンピュートマシンセットを使用して、ノードの作成時にコンピュートマシンセットによって管理されるノードにラベルを追加します。 - 以下のコマンドを実行してラベルを - MachineSetオブジェクトに追加します。- oc patch MachineSet <name> --type='json' -p='[{"op":"add","path":"/spec/template/spec/metadata/labels", "value":{"<key>"="<value>","<key>"="<value>"}}]' -n openshift-machine-api- $ oc patch MachineSet <name> --type='json' -p='[{"op":"add","path":"/spec/template/spec/metadata/labels", "value":{"<key>"="<value>","<key>"="<value>"}}]' -n openshift-machine-api- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- それぞれのラベルに<key>/<value>ペアを追加します。
 - 以下に例を示します。 - oc patch MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c --type='json' -p='[{"op":"add","path":"/spec/template/spec/metadata/labels", "value":{"type":"user-node","region":"east"}}]' -n openshift-machine-api- $ oc patch MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c --type='json' -p='[{"op":"add","path":"/spec/template/spec/metadata/labels", "value":{"type":"user-node","region":"east"}}]' -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow ヒント- あるいは、以下の YAML を適用してコンピュートマシンセットにラベルを追加することもできます。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- oc editコマンドを使用して、ラベルが- MachineSetオブジェクトに追加されていることを確認します。- 以下に例を示します。 - oc edit MachineSet abc612-msrtw-worker-us-east-1c -n openshift-machine-api - $ oc edit MachineSet abc612-msrtw-worker-us-east-1c -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - MachineSetオブジェクトの例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 0にスケールダウンし、ノードをスケールアップして、そのコンピュートマシンセットに関連付けられたノードを再デプロイします。- 以下に例を示します。 - oc scale --replicas=0 MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c -n openshift-machine-api - $ oc scale --replicas=0 MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - oc scale --replicas=1 MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c -n openshift-machine-api - $ oc scale --replicas=1 MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ノードの準備ができ、利用可能な状態になったら、 - oc getコマンドを使用してラベルがノードに追加されていることを確認します。- oc get nodes -l <key>=<value> - $ oc get nodes -l <key>=<value>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下に例を示します。 - oc get nodes -l type=user-node - $ oc get nodes -l type=user-node- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME STATUS ROLES AGE VERSION ci-ln-l8nry52-f76d1-hl7m7-worker-c-vmqzp Ready worker 61s v1.29.4 - NAME STATUS ROLES AGE VERSION ci-ln-l8nry52-f76d1-hl7m7-worker-c-vmqzp Ready worker 61s v1.29.4- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- ラベルをノードに直接追加します。 - ノードの - Nodeオブジェクトを編集します。- oc label nodes <name> <key>=<value> - $ oc label nodes <name> <key>=<value>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - たとえば、ノードにラベルを付けるには、以下を実行します。 - oc label nodes ci-ln-l8nry52-f76d1-hl7m7-worker-b-tgq49 type=user-node region=east - $ oc label nodes ci-ln-l8nry52-f76d1-hl7m7-worker-b-tgq49 type=user-node region=east- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow ヒント- あるいは、以下の YAML を適用してノードにラベルを追加することもできます。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- oc getコマンドを使用して、ラベルがノードに追加されていることを確認します。- oc get nodes -l <key>=<value>,<key>=<value> - $ oc get nodes -l <key>=<value>,<key>=<value>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下に例を示します。 - oc get nodes -l type=user-node,region=east - $ oc get nodes -l type=user-node,region=east- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME STATUS ROLES AGE VERSION ci-ln-l8nry52-f76d1-hl7m7-worker-b-tgq49 Ready worker 17m v1.29.4 - NAME STATUS ROLES AGE VERSION ci-ln-l8nry52-f76d1-hl7m7-worker-b-tgq49 Ready worker 17m v1.29.4- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow