2.9. vSphere でコンピュートマシンセットを作成する
VMware vSphere 上に OpenShift Container Platform のコンピュートマシンセットを定義および作成することで、Machine API を使用して vSphere 内のコンピュートノードを自動的にスケーリングおよび管理できるようになります。vSphere 上の OpenShift Container Platform クラスターでは、特定の目的に合わせて異なるコンピュートマシンセットを作成できます。たとえば、インフラストラクチャーマシンセットおよび関連マシンを作成して、サポートするワークロードを新しいマシンに移動できます。
高度なマシン管理およびスケーリング機能は、Machine API が動作しているクラスターでのみ使用できます。user-provisioned infrastructure を持つクラスターでは、Machine API を使用するために追加の検証と設定が必要です。
インフラストラクチャープラットフォームタイプが none のクラスターでは、Machine API を使用できません。この制限は、クラスターに接続されている計算マシンが、この機能をサポートするプラットフォームにインストールされている場合でも適用されます。このパラメーターは、インストール後に変更することはできません。
クラスターのプラットフォームタイプを表示するには、以下のコマンドを実行します。
$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
2.9.1. vSphere 上のコンピュートマシンセットカスタムリソースのサンプル YAML リンクのコピーリンクがクリップボードにコピーされました!
Machine API を使用して VMware vSphere インフラストラクチャー上のノードプロビジョニングを自動化するには、データセンター、リソースプール、テンプレートなど、VMware vSphere に固有のパラメーターを持つ MachineSet リソースを定義します。
サンプル YAML ファイルは、VMware vSphere 上で実行されるコンピュートマシンセットを定義し、node-role.kubernetes.io/<role>: "" というラベルの付いたノードを作成します。
このサンプルでは、<infrastructure_id> はクラスターのプロビジョニング時に設定したクラスター ID に基づくインフラストラクチャー ID であり、<role> は追加するノードラベルです。
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
name: <infrastructure_id>-<role>
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
template:
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <role>
machine.openshift.io/cluster-api-machine-type: <role>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
spec:
metadata:
creationTimestamp: null
labels:
node-role.kubernetes.io/<role>: ""
providerSpec:
value:
apiVersion: machine.openshift.io/v1beta1
credentialsSecret:
name: vsphere-cloud-credentials
dataDisks:
- name: "<disk_name>"
provisioningMode: "<mode>"
sizeGiB: 20
diskGiB: 120
kind: VSphereMachineProviderSpec
memoryMiB: 8192
metadata:
creationTimestamp: null
network:
devices:
- networkName: "<vm_network_name>"
numCPUs: 4
numCoresPerSocket: 1
snapshot: ""
template: <vm_template_name>
userDataSecret:
name: worker-user-data
workspace:
datacenter: <vcenter_data_center_name>
datastore: <vcenter_datastore_name>
folder: <vcenter_vm_folder_path>
resourcepool: <vsphere_resource_pool>
server: <vcenter_server_ip>
以下は、
<infrastructure_id>-
クラスターのプロビジョニング時に設定したクラスター ID を基にするインフラストラクチャー ID を指定します。OpenShift CLI (
oc) がインストールされている場合は、以下のコマンドを実行してインフラストラクチャー ID を取得できます。
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
<infrastructure_id>-<role>- インフラストラクチャー ID とノードラベルを指定します。
<role>- 追加するノードラベルを指定します。
< ディスク名 >- 1 つ以上のデータディスク定義を指定します。詳細は、「マシンセットを使用してデータディスクを設定する」を参照してください。
<vm_network_name>- コンピュートマシンセットをデプロイする vSphere 仮想マシンネットワークを指定します。この仮想マシンネットワークは、他のコンピューティングマシンがクラスター内に存在する場所である必要があります。
<vm_template_name>-
user-5ddjd-rhcosなど、使用する vSphere VM テンプレートを指定します。 <vcenter_data_center_name>- コンピュートマシンセットをデプロイする vCenter データセンターを指定します。
<vcenter_datastore_name>- コンピュートマシンセットをデプロイする vCenter データストアを指定します。
<vcenter_vm_folder_path>-
/dc1/vm/user-inst-5ddjdなどの vCenter の vSphere 仮想マシンフォルダーへのパスを指定します。 <vsphere_resource_pool>- 仮想マシンの vSphere リソースプールを指定します。
<vcenter_server_ip>- vCenter サーバーの IP または完全修飾ドメイン名を指定します。