2.8. OpenStack でコンピュートマシンセットを作成する
異なるコンピュートマシンセットを作成して、Red Hat OpenStack Platform (RHOSP) 上の 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.8.1. RHOSP 上のコンピュートマシンセットカスタムリソースのサンプル YAML
					このサンプル YAML は、Red Hat OpenStack Platform (RHOSP) で実行され、node-role.kubernetes.io/<role>: "" というラベルが付けられたノードを作成するコンピュートマシンセットを定義します。
				
					このサンプルでは、<infrastructure_id> はクラスターのプロビジョニング時に設定したクラスター ID に基づくインフラストラクチャー ID であり、<role> は追加するノードラベルです。
				
- 1 5 7 13 15 16 17 18
- クラスターのプロビジョニング時に設定したクラスター ID を基にするインフラストラクチャー ID を指定します。OpenShift CLI がインストールされている場合は、以下のコマンドを実行してインフラストラクチャー 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 3 8 9 19
- 追加するノードラベルを指定します。
- 4 6 10
- インフラストラクチャー ID およびノードラベルを指定します。
- 11
- MachineSet のサーバーグループポリシーを設定するには、サーバーグループの作成 から返された値を入力します。ほとんどのデプロイメントでは、anti-affinityまたはsoft-anti-affinityが推奨されます。
- 12
- 複数のネットワークへのデプロイに必要です。複数のネットワークを指定するには、ネットワークアレイに別のエントリーを追加します。また、primarySubnetの値として使用されるネットワークが含まれる必要があります。
- 14
- ノードのエンドポイントを公開する RHOSP サブネットを指定します。通常、これはinstall-config.yamlファイルのmachinesSubnetの値として使用される同じサブネットです。
2.8.2. RHOSP 上の SR-IOV を使用するコンピュートマシンセットのカスタムリソースのサンプル YAML
クラスターを SR-IOV (Single-root I/O Virtualization) 用に設定している場合に、その技術を使用するコンピュートマシンセットを作成できます。
					このサンプル YAML は SR-IOV ネットワークを使用するコンピュートマシンセットを定義します。作成するノードには node-role.openshift.io/<node_role>: "" というラベルが付けられます。
				
					このサンプルでは、infrastructure_id はクラスターのプロビジョニング時に設定したクラスター ID に基づくインフラストラクチャー ID ラベルであり、node_role は追加するノードラベルです。
				
					この例では、"radio" と "uplink" という名前の 2 つの SR-IOV ネットワークを想定しています。これらのネットワークは、spec.template.spec.providerSpec.value.ports リストのポート定義で使用されます。
				
この例では、SR-IOV デプロイメント固有のパラメーターのみを説明します。より一般的なサンプルを確認するには、「RHOSP 上のコンピュートマシンセットのカスタムリソースのサンプル YAML」を参照してください。
SR-IOV ネットワークを使用するコンピュートマシンセットの例
- 1 5
- 各ポートにネットワークの UUID を入力します。
- 2 6
- 各ポートのサブネット UUID を入力します。
- 3 7
- vnicTypeパラメーターの値は、各ポートに- 直接指定する必要があります。
- 4 8
- portSecurityパラメーターの値は、各ポートで- falseである必要があります。- ポートセキュリティーが無効な場合は、ポートにセキュリティーグループと使用可能なアドレスペアを設定できません。インスタンスにセキュリティーグループを設定すると、グループが割り当てられているすべてのポートに適用されます。 
- 9
- configDriveパラメーターの値は- trueである必要があります。
SR-IOV 対応のコンピュートマシンをデプロイしたら、そのようにラベルを付ける必要があります。たとえば、コマンドラインから次のように入力します。
oc label node <NODE_NAME> feature.node.kubernetes.io/network-sriov.capable="true"
$ oc label node <NODE_NAME> feature.node.kubernetes.io/network-sriov.capable="true"
						トランクは、ネットワークおよびサブネットの一覧のエントリーで作成されるポート向けに有効にされます。これらのリストから作成されたポートの名前は、<machine_name>-<nameSuffix> パターンを使用します。nameSuffix フィールドは、ポート定義に必要です。
					
それぞれのポートにトランキングを有効にすることができます。
						オプションで、タグを タグ 一覧の一部としてポートに追加できます。
					
2.8.3. ポートセキュリティーが無効にされている SR-IOV デプロイメントのサンプル YAML
					ポートセキュリティーが無効にされたネットワークに single-root I/O Virtualization (SR-IOV) ポートを作成するには、spec.template.spec.providerSpec.value.ports 一覧の項目としてポートを含めてコンピュートマシンセットを定義します。標準の SR-IOV コンピュートマシンセットとのこの相違点は、ネットワークとサブネットインターフェイスを使用して作成されたポートに対して発生する自動セキュリティーグループと使用可能なアドレスペア設定によるものです。
				
マシンのサブネット用に定義するポートには、以下が必要です。
- API および Ingress 仮想 IP ポート用に許可されるアドレスペア
- コンピュートセキュリティーグループ
- マシンネットワークおよびサブネットへの割り当て
以下の例のように、ポートセキュリティーが無効になっている SR-IOV デプロイメント固有のパラメーターのみを説明します。より一般的なサンプルを確認するには、「RHOSP 上の SR-IOV を使用するコンピュートマシンセットカスタムリソースのサンプル YAML」を参照してください。
SR-IOV ネットワークを使用し、ポートセキュリティーが無効にされているコンピュートマシンセットの例
						トランクは、ネットワークおよびサブネットの一覧のエントリーで作成されるポート向けに有効にされます。これらのリストから作成されたポートの名前は、<machine_name>-<nameSuffix> パターンを使用します。nameSuffix フィールドは、ポート定義に必要です。
					
それぞれのポートにトランキングを有効にすることができます。
						オプションで、タグを タグ 一覧の一部としてポートに追加できます。
					
2.8.4. コンピュートマシンセットの作成
インストールプログラムによって作成されるコンピュートセットセットに加えて、独自のマシンセットを作成して、選択した特定のワークロードのマシンコンピューティングリソースを動的に管理できます。
前提条件
- OpenShift Container Platform クラスターをデプロイしている。
- 
							OpenShift CLI (oc) がインストールされている。
- 
							cluster-adminパーミッションを持つユーザーとして、ocにログインする。
手順
- コンピュートマシンセットのカスタムリソース (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 
 
- 次のコマンドを実行して - 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.8.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 リソース定義」を参照してください。