2.6. vSphere でのマシンセットの作成


VMware vSphere 上の OpenShift Container Platform クラスターで特定の目的を果たすように異なるマシンセットを作成することができます。たとえば、インフラストラクチャーマシンセットおよび関連マシンを作成して、サポートするワークロードを新しいマシンに移動できます。

重要

高度なマシン管理およびスケーリング機能は、マシン API が機能しているクラスターでのみ使用することができます。ユーザーによってプロビジョニングされるインフラストラクチャーを持つクラスターには、マシン API を使用するために追加の検証および設定が必要です。

インフラストラクチャープラットフォームタイプが none のクラスターは、マシン API を使用できません。この制限は、クラスターに接続されているコンピュートマシンが機能をサポートするプラットフォームにインストールされている場合でも適用されます。このパラメーターは、インストール後に変更することはできません。

クラスターのプラットフォームタイプを表示するには、以下のコマンドを実行します。

$ oc get infrastructure cluster -o jsonpath='{.status.platform}'

2.6.1. vSphere 上のマシンセットのカスタムリソースのサンプル YAML

このサンプル 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> 1
  name: <infrastructure_id>-<role> 2
  namespace: openshift-machine-api
spec:
  replicas: 1
  selector:
    matchLabels:
      machine.openshift.io/cluster-api-cluster: <infrastructure_id> 3
      machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> 4
  template:
    metadata:
      creationTimestamp: null
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id> 5
        machine.openshift.io/cluster-api-machine-role: <role> 6
        machine.openshift.io/cluster-api-machine-type: <role> 7
        machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> 8
    spec:
      metadata:
        creationTimestamp: null
        labels:
          node-role.kubernetes.io/<role>: "" 9
      providerSpec:
        value:
          apiVersion: vsphereprovider.openshift.io/v1beta1
          credentialsSecret:
            name: vsphere-cloud-credentials
          diskGiB: 120
          kind: VSphereMachineProviderSpec
          memoryMiB: 8192
          metadata:
            creationTimestamp: null
          network:
            devices:
            - networkName: "<vm_network_name>" 10
          numCPUs: 4
          numCoresPerSocket: 1
          snapshot: ""
          template: <vm_template_name> 11
          userDataSecret:
            name: worker-user-data
          workspace:
            datacenter: <vcenter_datacenter_name> 12
            datastore: <vcenter_datastore_name> 13
            folder: <vcenter_vm_folder_path> 14
            resourcepool: <vsphere_resource_pool> 15
            server: <vcenter_server_ip> 16
1 3 5
クラスターのプロビジョニング時に設定したクラスター ID を基にするインフラストラクチャー ID を指定します。OpenShift CLI (oc) がインストールされている場合は、以下のコマンドを実行してインフラストラクチャー ID を取得できます。
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
2 4 8
インフラストラクチャー ID およびノードラベルを指定します。
6 7 9
追加するノードラベルを指定します。
10
コンピュートマシンセットをデプロイする vSphere 仮想マシンネットワークを指定します。この仮想マシンネットワークは、他のコンピューティングマシンがクラスター内に存在する場所である必要があります。
11
user-5ddjd-rhcos などの使用する vSphere 仮想マシンテンプレートを指定します。
12
コンピュートマシンセットをデプロイする vCenter Datacenter を指定します。
13
コンピュートマシンセットをデプロイする vCenter Datastore を指定します。
14
/dc1/vm/user-inst-5ddjd などの vCenter の vSphere 仮想マシンフォルダーへのパスを指定します。
15
仮想マシンの vSphere リソースプールを指定します。
16
vCenter サーバーの IP または完全修飾ドメイン名を指定します。

2.6.2. マシンセット管理に最低限必要な vCenter 権限

vCenter 上の OpenShift Container Platform クラスターでマシンセットを管理するには、必要なリソースの読み取り、作成、および削除を行う権限を持つアカウントを使用する必要があります。グローバル管理者権限のあるアカウントを使用すること方法が、必要なすべてのパーミッションにアクセスするための最も簡単な方法です。

グローバル管理者権限を持つアカウントを使用できない場合は、最低限必要な権限を付与するロールを作成する必要があります。次の表に、マシンセットの作成、スケーリング、削除、および OpenShift Container Platform クラスター内のマシンの削除に必要な vCenter の最小のロールと特権を示します。

例2.1 マシンセットの管理に必要な最小限の vCenter のロールと権限

ロールの vSphere オブジェクト必要になる場合必要な特権

vSphere vCenter

Always

InventoryService.Tagging.AttachTag
InventoryService.Tagging.CreateCategory
InventoryService.Tagging.CreateTag
InventoryService.Tagging.DeleteCategory
InventoryService.Tagging.DeleteTag---|------------InventoryService.Tagging.EditCategorysplunkInventoryService.Tagging.EditTag---|------------Sessions.ValidateSession---|------------StorageProfile.Update1splunkStorageProfile.View1




vSphere vCenter Cluster

Always

Resource.AssignVMToPool

vSphere Datastore

Always

Datastore.AllocateSpace
Datastore.Browse

vSphere ポートグループ

Always

Network.Assign

仮想マシンフォルダー

Always

VirtualMachine.Config.AddRemoveDevice
VirtualMachine.Config.AdvancedConfig
VirtualMachine.Config.Annotation
VirtualMachine.Config.CPUCount
VirtualMachine.Config.DiskExtend---|------------VirtualMachine.Config.Memory---|------------VirtualMachine.Config.SettingssplunkVirtualMachine.Interact.PowerOffsplunkVirtualMachine.Interact.PowerOnsplunkVirtualMachine.Inventory.CreateFromExistingsplunkVirtualMachine.Inventory.DeletesplunkVirtualMachine.Provisioning.Clone






vSphere vCenter Datacenter

インストールプログラムが仮想マシンフォルダーを作成する場合

Resource.AssignVMToPool
VirtualMachine.Provisioning.DeployTemplate

1StorageProfile.Update および StorageProfile.View 権限は、Container Storage Interface (CSI) を使用するストレージバックエンドにのみ必要です。

重要

CSI ドライバーおよび機能の一部は、OpenShift Container Platform 4.9 ではテクノロジープレビューとして提供されています。詳細は、OpenShift Container Platform でサポートされる CSI ドライバー を参照してください。

次の表に、マシンセットの管理に必要なパーミッションと伝播設定の詳細を示します。

例2.2 必要なパーミッションおよび伝播の設定

vSphere オブジェクトフォルダータイプ子への伝播パーミッションが必要

vSphere vCenter

Always

必須ではありません。

必要な特権が一覧表示

vSphere vCenter Datacenter

既存のフォルダー

必須ではありません。

ReadOnly パーミッション

インストールプログラムがフォルダーを作成する

必須

必要な特権が一覧表示

vSphere vCenter Cluster

Always

必須

必要な特権が一覧表示

vSphere vCenter Datastore

Always

必須ではありません。

必要な特権が一覧表示

vSphere Switch

Always

必須ではありません。

ReadOnly パーミッション

vSphere ポートグループ

Always

必須ではありません。

必要な特権が一覧表示

vSphere vCenter 仮想マシンフォルダー

既存のフォルダー

必須

必要な特権が一覧表示

必要な権限のみを持つアカウントの作成に関する詳細は、vSphere ドキュメントの vSphere Permissions and User Management Tasks を参照してください。

関連情報

2.6.3. コンピュートマシンセットを使用するためのユーザーによってプロビジョニングされるインフラストラクチャーを持つクラスターの要件

ユーザーによってプロビジョニングされるインフラストラクチャーを持つクラスターでコンピュートマシンセットを使用するには、クラスター設定が Machine API の使用をサポートすることを確認する必要があります。

インフラストラクチャー ID の取得

コンピュートマシンセットを作成するには、クラスターのインフラストラクチャー ID を提供できる必要があります。

手順

  • クラスターのインフラストラクチャー ID を取得するには、以下のコマンドを実行します。

    $ oc get infrastructure cluster -o jsonpath='{.status.infrastructureName}'
vSphere 認証情報要件の順守

コンピュートマシンセットを使用するには、Machine API が vCenter と対話できる必要があります。マシン API コンポーネントが vCenter と対話することを許可する認証情報は、openshift-machine-api namespace のシークレットに存在する必要があります。

手順

  1. 必要な認証情報が存在するかどうかを確認するには、以下のコマンドを実行します。

    $ 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}}'

    出力例

    <vcenter-server>.password=<openshift-user-password>
    <vcenter-server>.username=<openshift-user>

    ここで、< vcenter-server > は vCenter サーバーの IP アドレスまたは完全修飾ドメイン名(FQDN)で、< openshift-user > および < openshift-user-password > は使用する OpenShift Container Platform 管理者認証情報になります。

  2. シークレットが存在しない場合は、以下のコマンドを実行して作成します。

    $ 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>
Ignition 設定要件の準拠

仮想マシン(VM)のプロビジョニングには、有効な Ignition 設定が必要です。Ignition 設定には、machine-config-server アドレスおよび Machine Config Operator から追加の Ignition 設定を取得するためのシステム信頼バンドルが含まれます。

デフォルトでは、この設定は machine-api-operator namespace の worker-user-data シークレットに保存されます。コンピュートマシンセットは、マシン作成プロセス中にシークレットを参照します。

手順

  1. 必要なシークレットが存在するかどうかを確認するには、以下のコマンドを実行します。

    $ 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}}'

    出力例

    disableTemplating: false
    userData: 1
      {
        "ignition": {
          ...
          },
        ...
      }

    1
    完全な出力はここでは省略されていますが、この形式が必要です。
  2. シークレットが存在しない場合は、以下のコマンドを実行して作成します。

    $ oc create secret generic worker-user-data \
      -n openshift-machine-api \
      --from-file=<installation_directory>/worker.ign

    ここで 、<installation_directory > は、クラスターのインストール時にインストールアセットを保存するために使用されたディレクトリーです。

2.6.4. マシンセットの作成

インストールプログラムによって作成されるコンピュートマシンセットの他に、独自に作成して、選択する特定のワークロードに対するマシンのコンピュートリソースを動的に管理することができます。

注記

ユーザーによってプロビジョニングされるインフラストラクチャーでインストールされるクラスターには、インストールプログラムでプロビジョニングされるインフラストラクチャーを持つクラスターとは異なるネットワークスタックがあります。この違いにより、ユーザーによってプロビジョニングされるインフラストラクチャーを持つクラスターでは、自動ロードバランサー管理はサポートされません。これらのクラスターの場合、コンピュートマシンセットは ワーカー および インフラ タイプのマシンのみを作成できます。

前提条件

  • OpenShift Container Platform クラスターをデプロイすること。
  • OpenShift CLI (oc) をインストールしている。
  • cluster-admin パーミッションを持つユーザーとして、oc にログインする。
  • vCenter インスタンスに仮想マシンをデプロイするのに必要なパーミッションがあり、指定されたデータストアへのアクセス権限が必要です。
  • クラスターがユーザーによってプロビジョニングされるインフラストラクチャーを使用する場合、その設定の特定の Machine API 要件を満たす必要があります。

手順

  1. 説明されているようにマシンセット カスタムリソース (CR) サンプルを含む新規 YAML ファイルを作成し、そのファイルに <file_name>.yaml という名前を付けます。

    <clusterID> および <role> パラメーターの値を設定していることを確認します。

  2. オプション:特定のフィールドに設定する値が不明な場合は、クラスターから既存のコンピュートマシンセットを確認できます。

    1. クラスター内のコンピュートマシンセットを一覧表示するには、以下のコマンドを実行します。

      $ oc get machinesets -n openshift-machine-api

      出力例

      NAME                                DESIRED   CURRENT   READY   AVAILABLE   AGE
      agl030519-vplxk-worker-us-east-1a   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1b   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1c   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1d   0         0                             55m
      agl030519-vplxk-worker-us-east-1e   0         0                             55m
      agl030519-vplxk-worker-us-east-1f   0         0                             55m

    2. 特定のコンピュートマシンセットカスタムリソース(CR)の値を表示するには、以下のコマンドを実行します。

      $ oc get machineset <machineset_name> \
        -n openshift-machine-api -o yaml

      出力例

      apiVersion: machine.openshift.io/v1beta1
      kind: MachineSet
      metadata:
        labels:
          machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1
        name: <infrastructure_id>-<role> 2
        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:
            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:
            providerSpec: 3
              ...

      1
      クラスターインフラストラクチャー ID。
      2
      デフォルトのノードラベル。
      注記

      ユーザーによってプロビジョニングされるインフラストラクチャーを持つクラスターの場合、コンピュートマシンセットは ワーカー および インフラ タイプのマシンのみを作成できます。

      3
      コンピュートマシンセット CR の & lt;providerSpec > セクションの値はプラットフォーム固有です。CR の < providerSpec&gt; パラメーターの詳細は、プロバイダーのコンピュートマシンセット CR の設定例 を参照してください。
    3. ユーザーによってプロビジョニングされるインフラストラクチャーを持つクラスターのコンピュートマシンセットを作成する場合は、以下の重要な値に注意してください。

      vSphere providerSpec 値の例

      apiVersion: machine.openshift.io/v1beta1
      kind: MachineSet
      ...
      template:
        ...
        spec:
          providerSpec:
            value:
              apiVersion: machine.openshift.io/v1beta1
              credentialsSecret:
                name: vsphere-cloud-credentials 1
              diskGiB: 120
              kind: VSphereMachineProviderSpec
              memoryMiB: 16384
              network:
                devices:
                  - networkName: "<vm_network_name>"
              numCPUs: 4
              numCoresPerSocket: 4
              snapshot: ""
              template: <vm_template_name> 2
              userDataSecret:
                name: worker-user-data 3
              workspace:
                datacenter: <vcenter_datacenter_name>
                datastore: <vcenter_datastore_name>
                folder: <vcenter_vm_folder_path>
                resourcepool: <vsphere_resource_pool>
                server: <vcenter_server_address> 4

      1
      必要な vCenter 認証情報が含まれる openshift-machine-api namespace のシークレットの名前。
      2
      インストール時に作成されたクラスターの RHCOS 仮想マシンテンプレートの名前。
      3
      必要な Ignition 設定認証情報が含まれる openshift-machine-api namespace のシークレットの名前。
      4
      vCenter サーバーの IP アドレスまたは完全修飾ドメイン名(FQDN)。
  3. 以下のコマンドを実行して MachineSet CR を作成します。

    $ oc create -f <file_name>.yaml

検証

  • 次のコマンドを実行して、コンピュートマシンセットのリストを表示します。

    $ oc get machineset -n openshift-machine-api

    出力例

    NAME                                DESIRED   CURRENT   READY   AVAILABLE   AGE
    agl030519-vplxk-infra-us-east-1a    1         1         1       1           11m
    agl030519-vplxk-worker-us-east-1a   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1b   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1c   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1d   0         0                             55m
    agl030519-vplxk-worker-us-east-1e   0         0                             55m
    agl030519-vplxk-worker-us-east-1f   0         0                             55m

    新規のマシンセットが利用可能な場合、 DESIRED および CURRENT の値は一致します。マシンセットが利用可能でない場合、数分待機してからコマンドを再度実行します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.