2.9. vSphere でコンピュートマシンセットを作成する
VMware vSphere 上の OpenShift Container Platform クラスターで特定の目的を果たすように異なるコンピュートマシンセットを作成することができます。たとえば、インフラストラクチャーマシンセットおよび関連マシンを作成して、サポートするワークロードを新しいマシンに移動できます。
高度なマシン管理およびスケーリング機能は、Machine API が動作しているクラスターでのみ使用できます。user-provisioned infrastructure を持つクラスターでは、Machine API を使用するために追加の検証と設定が必要です。
					インフラストラクチャープラットフォームタイプが none のクラスターでは、Machine API を使用できません。この制限は、クラスターに接続されている計算マシンが、この機能をサポートするプラットフォームにインストールされている場合でも適用されます。このパラメーターは、インストール後に変更することはできません。
				
クラスターのプラットフォームタイプを表示するには、以下のコマンドを実行します。
oc get infrastructure cluster -o jsonpath='{.status.platform}'
$ oc get infrastructure cluster -o jsonpath='{.status.platform}'2.9.1. vSphere 上のコンピュートマシンセットカスタムリソースのサンプル YAML
					このサンプル YAML は、VMware vSphere で実行され、node-role.kubernetes.io/<role>: "" というラベルが付けられたノードを作成するコンピュートマシンセットを定義します。
				
					このサンプルでは、<infrastructure_id> はクラスターのプロビジョニング時に設定したクラスター ID に基づくインフラストラクチャー ID であり、<role> は追加するノードラベルです。
				
- 1
- クラスターのプロビジョニング時に設定したクラスター ID を基にするインフラストラクチャー ID を指定します。OpenShift CLI (oc) がインストールされている場合は、以下のコマンドを実行してインフラストラクチャー ID を取得できます。oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 2
- インフラストラクチャー ID およびノードラベルを指定します。
- 3
- 追加するノードラベルを指定します。
- 4
- コンピュートマシンセットをデプロイする vSphere 仮想マシンネットワークを指定します。この仮想マシンネットワークは、他のコンピューティングマシンがクラスター内に存在する場所である必要があります。
- 5
- user-5ddjd-rhcosなどの使用する vSphere 仮想マシンテンプレートを指定します。
- 6
- コンピュートマシンセットをデプロイする vCenter データストアを指定します。
- 7
- コンピュートマシンセットをデプロイする vCenter データストアを指定します。
- 8
- /dc1/vm/user-inst-5ddjdなどの vCenter の vSphere 仮想マシンフォルダーへのパスを指定します。
- 9
- 仮想マシンの vSphere リソースプールを指定します。
- 10
- vCenter サーバーの IP または完全修飾ドメイン名を指定します。
2.9.2. コンピュートマシンセット管理に最低限必要な vCenter 権限
vCenter 上の OpenShift Container Platform クラスターでコンピュートマシンセットを管理するには、必要なリソースの読み取り、作成、および削除を行う権限を持つアカウントを使用する必要があります。グローバル管理者権限のあるアカウントを使用すること方法が、必要なすべてのパーミッションにアクセスするための最も簡単な方法です。
グローバル管理者権限を持つアカウントを使用できない場合は、最低限必要な権限を付与するロールを作成する必要があります。次の表に、コンピュートマシンセットの作成、スケーリング、削除、および OpenShift Container Platform クラスター内のマシンの削除に必要な vCenter の最小のロールと特権を示します。
例2.1 コンピュートマシンセットの管理に必要な最小限の vCenter のロールと権限
| ロールの vSphere オブジェクト | 必要になる場合 | 必要な特権 | 
|---|---|---|
| vSphere vCenter | 常時 | 
										 | 
| vSphere vCenter Cluster | 常時 | 
										 | 
| vSphere データストア | 常時 | 
										 | 
| vSphere ポートグループ | 常時 | 
										 | 
| 仮想マシンフォルダー | 常時 | 
										 | 
| vSphere vCenter data center | インストールプログラムが仮想マシンフォルダーを作成する場合。 | 
										 | 
| 
										1 | ||
次の表に、コンピュートマシンセットの管理に必要な権限と伝播設定の詳細を示します。
例2.2 必要な権限と伝播設定
| vSphere オブジェクト | フォルダータイプ | 子への伝播 | 必要な権限 | 
|---|---|---|---|
| vSphere vCenter | 常時 | 不要 | 上記の必要な特権 | 
| vSphere vCenter data center | 既存のフォルダー | 不要 | 
										 | 
| インストールプログラムがフォルダーを作成する | 必須 | 上記の必要な特権 | |
| vSphere vCenter Cluster | 常時 | 必須 | 上記の必要な特権 | 
| vSphere vCenter datastore | 常時 | 不要 | 上記の必要な特権 | 
| vSphere Switch | 常時 | 不要 | 
										 | 
| vSphere ポートグループ | 常時 | 不要 | 上記の必要な特権 | 
| vSphere vCenter 仮想マシンフォルダー | 既存のフォルダー | 必須 | 上記の必要な特権 | 
必要な権限のみを持つアカウントの作成に関する詳細は、vSphere ドキュメントの vSphere Permissions and User Management Tasks を参照してください。
2.9.3. コンピュートマシンセットを使用するための、ユーザーがプロビジョニングしたインフラストラクチャーを持つクラスターの要件
ユーザーがプロビジョニングしたインフラストラクチャーを持つクラスターでコンピュートマシンセットを使用するには、クラスター設定が Machine API の使用をサポートしていることを確認する必要があります。
2.9.3.1. インフラストラクチャー ID の取得
コンピュートマシンセットを作成するには、クラスターのインフラストラクチャー ID を指定できる必要があります。
手順
- クラスターのインフラストラクチャー 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 
2.9.3.2. vSphere 認証情報の要件を満たす
						コンピュートマシンセットを使用するには、Machine API が vCenter と対話できる必要があります。Machine API コンポーネントが vCenter と対話することを許可する認証情報が、openshift-machine-api namespace のシークレット内に存在している必要があります。
					
手順
- 必要な認証情報が存在するかどうかを確認するには、次のコマンドを実行します。 - oc get secret \ -n openshift-machine-api vsphere-cloud-credentials \ -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'- $ oc get secret \ -n openshift-machine-api vsphere-cloud-credentials \ -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - <vcenter-server>.password=<openshift-user-password> <vcenter-server>.username=<openshift-user> - <vcenter-server>.password=<openshift-user-password> <vcenter-server>.username=<openshift-user>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここで、 - <vcenter-server>は vCenter サーバーの IP アドレスまたは完全修飾ドメイン名 (FQDN) であり、- <openshift-user>および- <openshift-user-password>は使用する OpenShift Container Platform 管理者の認証情報です。
- シークレットが存在しない場合は、次のコマンドを実行して作成します。 - oc create secret generic vsphere-cloud-credentials \ -n openshift-machine-api \ --from-literal=<vcenter-server>.username=<openshift-user> --from-literal=<vcenter-server>.password=<openshift-user-password> - $ oc create secret generic vsphere-cloud-credentials \ -n openshift-machine-api \ --from-literal=<vcenter-server>.username=<openshift-user> --from-literal=<vcenter-server>.password=<openshift-user-password>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
2.9.3.3. Ignition 設定要件を満たす
						仮想マシン (VM) のプロビジョニングには、有効な Ignition 設定が必要です。Ignition 設定には、machine-config-server アドレスと、Machine Config Operator からさらに Ignition 設定を取得するためのシステム信頼バンドルが含まれています。
					
						デフォルトでは、この設定は machine-api-operator namespace の worker-user-data シークレットに保存されます。コンピュートマシンセットは、マシンの作成プロセス中にシークレットを参照します。
					
手順
- 必要なシークレットが存在するかどうかを判断するには、次のコマンドを実行します。 - oc get secret \ -n openshift-machine-api worker-user-data \ -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'- $ oc get secret \ -n openshift-machine-api worker-user-data \ -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- ここでは完全な出力は省略しますが、この形式にする必要があります。
 
- シークレットが存在しない場合は、次のコマンドを実行して作成します。 - oc create secret generic worker-user-data \ -n openshift-machine-api \ --from-file=<installation_directory>/worker.ign - $ oc create secret generic worker-user-data \ -n openshift-machine-api \ --from-file=<installation_directory>/worker.ign- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここで - <installation_directory>、クラスターのインストール中にインストール資産を保管するために使用されたディレクトリーです。
2.9.4. コンピュートマシンセットの作成
インストールプログラムによって作成されるコンピュートセットセットに加えて、独自のマシンセットを作成して、選択した特定のワークロードのマシンコンピューティングリソースを動的に管理できます。
						ユーザーがプロビジョニングしたインフラストラクチャーを使用してインストールされたクラスターには、インストールプログラムによってプロビジョニングされたインフラストラクチャーを使用したクラスターとは異なるネットワークスタックがあります。この違いの結果、自動ロードバランサー管理は、ユーザーがプロビジョニングしたインフラストラクチャーを持つクラスターではサポートされません。これらのクラスターの場合、コンピュートマシンセットは worker および infra タイプのマシンのみを作成できます。
					
前提条件
- OpenShift Container Platform クラスターをデプロイしている。
- 
							OpenShift CLI (oc) がインストールされている。
- 
							cluster-adminパーミッションを持つユーザーとして、ocにログインする。
- vCenter インスタンスに仮想マシンをデプロイするのに必要なパーミッションがあり、指定されたデータストアへのアクセス権限が必要です。
- クラスターが user-provisioned infrastructure を使用している場合は、その設定に応じた特定の Machine API 要件を満たしている。
手順
- コンピュートマシンセットのカスタムリソース (CR) サンプルを含む新しい YAML ファイルを作成し、 - <file_name>.yamlという名前を付けます。- <clusterID>および- <role>パラメーターの値を設定していることを確認します。
- オプション: 特定のフィールドに設定する値がわからない場合は、クラスターから既存のコンピュートマシンセットを確認できます。 - クラスター内のコンピュートマシンセットをリスト表示するには、次のコマンドを実行します。 - oc get machinesets -n openshift-machine-api - $ oc get machinesets -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 特定のコンピュートマシンセットカスタムリソース (CR) 値を表示するには、以下のコマンドを実行します。 - oc get machineset <machineset_name> \ -n openshift-machine-api -o yaml - $ oc get machineset <machineset_name> \ -n openshift-machine-api -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ユーザーがプロビジョニングしたインフラストラクチャーを持つクラスター用のコンピュートマシンセットを作成する場合は、次の重要な値に注意してください。 - 例: vSphere - providerSpec値- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 次のコマンドを実行して - MachineSetCR を作成します。- oc create -f <file_name>.yaml - $ oc create -f <file_name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- 次のコマンドを実行して、コンピュートマシンセットのリストを表示します。 - oc get machineset -n openshift-machine-api - $ oc get machineset -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 新しいコンピュートマシンセットが利用可能になると、 - DESIREDと- CURRENTの値が一致します。コンピュートマシンセットが使用できない場合は、数分待ってからコマンドを再実行してください。
2.9.5. Cluster Autoscaler 用の GPU マシンセットのラベル付け
マシンセットラベルを使用すると、Cluster Autoscaler が GPU 対応ノードのデプロイに使用できるマシンを指定できます。
前提条件
- クラスターが Cluster Autoscaler を使用している。
手順
- Cluster Autoscaler が GPU 対応ノードのデプロイに使用するマシンを作成するのに必要なマシンセットに、 - cluster-api/acceleratorラベルを追加します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 英数字、-、_、.で構成され、先頭と末尾が英数字であるラベルを指定します。たとえば、Nvidia T4 GPU を表すにはnvidia-t4を使用し、A10G GPU を表すにはnvidia-a10gを使用します。注記ClusterAutoscalerCR のspec.resourceLimits.gpus.typeパラメーターにこのラベルの値を指定する必要があります。詳細は、「Cluster Autoscaler リソース定義」を参照してください。
 
2.9.6. マシンセットの使用によるマシンへのタグの追加
OpenShift Container Platform は、作成する各仮想マシンにクラスター固有のタグを追加します。インストールプログラムはこれらのタグを使用して、クラスターをアンインストールするときに削除する仮想マシンを選択します。
仮想マシンに割り当てられたクラスター固有のタグのほかに、プロビジョニングする仮想マシンに最大 10 個の vSphere タグを追加するようにマシンセットを設定できます。
前提条件
- 
							cluster-admin権限を持つアカウントを使用して、vSphere にインストールされた OpenShift Container Platform クラスターにアクセスできる。
- クラスターに関連付けられた VMware vCenter コンソールにアクセスできる。
- vCenter コンソールにタグを作成している。
- 
							OpenShift CLI (oc) がインストールされている。
手順
- vCenter コンソールを使用して、マシンに追加するタグのタグ ID を検索します。 - vCenter コンソールにログインします。
- Home メニューから、Tags & Custom Attributes をクリックします。
- マシンに追加するタグを選択します。
- 選択したタグのブラウザー URL を使用して、タグ ID を特定します。 - タグ URL の例 - https://vcenter.example.com/ui/app/tags/tag/urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL/permissions - https://vcenter.example.com/ui/app/tags/tag/urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL/permissions- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - タグ ID の例 - urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL - urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- テキストエディターで、既存のマシンセットの YAML ファイルを開くか、新しいマシンセットを作成します。
- providerSpecフィールドの下に次の行を編集します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow