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 cluster
Copy 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
次のコマンドを実行して
MachineSet
CR を作成します。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
を使用します。注記ClusterAutoscaler
CR の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
2.9.7. マシンセットを使用して複数のネットワークインターフェイスコントローラーを設定する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere 上の OpenShift Container Platform クラスターでは、ノードに最大 10 個のネットワークインターフェイスコントローラー (NIC) を接続できます。複数の NIC を設定することで、ストレージやデータベースなどの用途のために、ノード仮想マシン (VM) に専用のネットワークリンクを提供できます。
この設定を管理するには、マシンセットを使用できます。
- インストール時に複数の NIC を使用するように設定されていなかった vSphere クラスターで複数の NIC を使用する場合は、マシンセットを使用してこの設定を実装できます。
- インストール時にクラスターが複数の NIC を使用するように設定されている場合、作成するマシンセットで既存の障害ドメイン設定を使用できます。
- 障害ドメインの設定が変更された場合は、マシンセットを使用して、その変更を反映する更新を行うことができます。
複数の NIC の設定はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
前提条件
-
vSphere 上の OpenShift Container Platform クラスターの OpenShift CLI (
oc
) に対する管理者アクセス権がある。
手順
すでに複数の NIC を使用しているクラスターの場合は、次のコマンドを実行して、
Infrastructure
リソースから次の値を取得します。oc get infrastructure cluster -o=jsonpath={.spec.platformSpec.vsphere.failureDomains}
$ oc get infrastructure cluster -o=jsonpath={.spec.platformSpec.vsphere.failureDomains}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表2.3 必要なネットワークインターフェイスコントローラーの値 Infrastructure
リソースの値サンプルマシンセットのプレースホルダーの値 説明 failureDomain.topology.networks[0]
<vm_network_name_1>
使用する 1 番目の NIC の名前。
failureDomain.topology.networks[1]
<vm_network_name_2>
使用する 2 番目の NIC の名前。
failureDomain.topology.networks[<n-1>]
<vm_network_name_n>
使用する n 番目の NIC の名前。
Infrastructure
リソース内の各 NIC の名前を収集します。failureDomain.topology.template
<vm_template_name>
使用する vSphere 仮想マシンテンプレート。
failureDomain.topology.datacenter
<vcenter_data_center_name>
マシンセットをデプロイする vCenter データセンター。
failureDomain.topology.datastore
<vcenter_datastore_name>
マシンセットをデプロイする vCenter データストア。
failureDomain.topology.folder
<vcenter_vm_folder_path>
vCenter の vSphere 仮想マシンフォルダーへのパス (例:
/dc1/vm/user-inst-5ddjd
)。failureDomain.topology.computeCluster
+/Resources
<vsphere_resource_pool>
仮想マシンの vSphere リソースプール。
failureDomain.server
<vcenter_server_ip>
vCenter サーバーの IP または完全修飾ドメイン名 (FQDN)。
- テキストエディターで、既存のマシンセットの YAML ファイルを開くか、新しいマシンセットを作成します。
次の例のようにフォーマットされたマシンセット設定を使用します。
-
現在複数の NIC を使用しているクラスターの場合は、
Infrastructure
リソースの値を使用して、マシンセットのカスタムリソースに値を入力します。 - 複数の NIC を使用していないクラスターの場合は、マシンセットのカスタムリソースに使用する値を入力します。
サンプルマシンセット
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用する NIC のリストを最大 10 個指定します。
- 2
user-5ddjd-rhcos
などの使用する vSphere 仮想マシンテンプレートを指定します。- 3
- マシンセットをデプロイする vCenter データセンターを指定します。
- 4
- マシンセットをデプロイする vCenter データストアを指定します。
- 5
/dc1/vm/user-inst-5ddjd
などの vCenter の vSphere 仮想マシンフォルダーへのパスを指定します。- 6
- 仮想マシンの vSphere リソースプールを指定します。
- 7
- vCenter サーバーの IP または完全修飾ドメイン名 (FQDN) を指定します。
-
現在複数の NIC を使用しているクラスターの場合は、