第22章 VMWare vSphere の設定


OpenShift Container Platform は、VMWare vSphere VMDK ボリュームをアプリケーションデータの永続ストレージとして使用するなど、VMWare vSphere VMDK ボリュームにアクセスするように設定できます。

vSphere クラウドプロバイダーは、OpenShift Container Platform 内での vSphere の管理対象ストレージの使用を許可します。vSphere クラウドプロバイダーは以下に対応しています。

  • ボリューム
  • 永続ボリューム
  • ストレージクラスとプロビジョニングボリューム

22.1. 作業を開始する前の注意事項

22.1.1. VMware vSphere クラウドプロバイダーの前提条件

前提条件

VMware vSphere を有効化すると、各ノードの仮想マシンに VMware ツールをインストールする必要があります。詳しい情報は、「VMware ツールのインストール」を参照してください。

手順

  1. VM フォルダーを作成し、OpenShift Container Platform ノード VM をこのフォルダーに移動します。
  2. ノードの VM 名が正規表現 [a-z](()?[0-9a-z])?(\.[a-z0-9](([-0-9a-z])?[0-9a-z])?)* に従っていることを確認します。

    重要

    VM 名については、以下が禁止されています。

    • 数字を先頭に使用する。
    • 大文字を使用する。
    • - 以外の特殊文字を使用する。
    • 3 文字未満、64 文字以上の文字数にする。
  3. 各ノードについて disk.EnableUUID パラメーターを true に設定します。これにより、VMware vSphere の Virtual Machine Disk (VMDK) が常に一貫性のある UUID を VM に提示し、ディスクが正常にマウントされるようになります。

    クラスターに参加するすべての vSphere 仮想マシンノードについて、vSphere コンソールを使用して以下の手順を実行します。

  4. VM propertiesVM OptionsAdvancedConfiguration Parametersdisk.enabledUUID=TRUE」に移動します。

    1. GOVC 環境をセットアップします。

      curl -LO https://github.com/vmware/govmomi/releases/download/v0.15.0/govc_linux_amd64.gz
      gunzip govc_linux_amd64.gz
      chmod +x govc_linux_amd64
      cp govc_linux_amd64 /usr/bin/govc
      export GOVC_URL='vCenter IP OR FQDN'
      export GOVC_USERNAME='vCenter User'
      export GOVC_PASSWORD='vCenter Password'
      export GOVC_INSECURE=1
      Copy to Clipboard Toggle word wrap
    2. ノード VM パスを見つけます。

      govc ls /datacenter/vm/<vm-folder-name>
      Copy to Clipboard Toggle word wrap
    3. すべての VM について、disk.EnableUUIDtrue に設定します。

      govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
      Copy to Clipboard Toggle word wrap
注記

OpenShift Container Platform ノード VM がテンプレート VM で作成されている場合、disk.EnableUUID=1 をテンプレート VM に設定することができます。このテンプレートからクローン作成される VM はこのプロパティーを継承します。

  1. ロールを作成して、ロールを vSphere クラウドプロバイダーユーザーと vSphere エンティティーに割り当てます。vSphere クラウドプロバイダーでは、vCenter と対話するために以下の権限が必要になります。

    Expand
    ロール権限エンティティー子への伝播

    manage-k8s-node-vms

    Resource.AssignVMToPool System.Anonymous System.Read System.View VirtualMachine.Config.AddExistingDisk VirtualMachine.Config.AddNewDisk VirtualMachine.Config.AddRemoveDevice VirtualMachine.Config.RemoveDisk VirtualMachine.Inventory.Create VirtualMachine.Inventory.Delete

    クラスター、ホスト、VM フォルダー

    必要

    manage-k8s-volumes

    Datastore.AllocateSpace Datastore.FileManagement System.Anonymous System.Read System.View

    データストア

    No

    k8s-system-read-and-spbm-profile-view

    StorageProfile.View System.Anonymous System.Read System.View

    vCenter

    No

    ReadOnly

    System.Anonymous System.Read System.View

    データセンター、データストアクラスター、データストアストレージフォルダー

    No

カスタムロール、ユーザー、ロールの割り当ての作成手順については、「vSphere Documentation Center」を参照してください。

22.2. OpenShift Container Platform での vSphere の設定

OpenShift Container Platform は、vSphere 用に 2 種類の方法で設定できます。

22.2.1. オプション 1: Ansible を使用した OpenShift Container Platform での vSphere の設定

OpenShift Container Platform での VMware vSphere (VCP) の設定は、インストール時またはインストール後に Ansible インベントリーファイルを変更して行うことができます。

手順

  1. Ansible インベントリーファイルに以下を追加します。

    [OSEv3:vars]
    openshift_cloudprovider_kind=vsphere
    openshift_cloudprovider_vsphere_username=administrator@vsphere.local 
    1
    
    openshift_cloudprovider_vsphere_password=<password>
    openshift_cloudprovider_vsphere_host=10.x.y.32 
    2
    
    openshift_cloudprovider_vsphere_datacenter=<Datacenter> 
    3
    
    openshift_cloudprovider_vsphere_datastore=<Datastore> 
    4
    Copy to Clipboard Toggle word wrap
    1
    vSphere でディスクを作成し、割り当てるために必要なパーミッションを持つユーザー名。
    2
    vCenter サーバーアドレス。
    3
    OpenShift Container Platform VM が置かれる vCenter Datacenter 名。
    4
    VMDK の作成に使用されるデータストア。

Ansible でインストールすると、vSphere 環境に適合するように、以下のファイルが作成されて設定されます。

  • /etc/origin/cloudprovider/vsphere.conf
  • /etc/origin/master/master-config.yaml
  • /etc/origin/node/node-config.yaml

参照として、詳細のインベントリーは以下のように表示されます。

openshift_cloudprovider_vsphere_ 値は、OpenShift Container Platform が永続ボリュームのデータストアで VMDK などの vSphere リソースを作成できるようにするために必要です。

$ cat /etc/ansible/hosts

[OSEv3:children]
ansible
masters
infras
apps
etcd
nodes
lb

[OSEv3:vars]
become=yes
ansible_become=yes
ansible_user=root
openshift_release="v3.10"
openshift_version="3.10"
openshift_deployment_type=openshift-enterprise
# Required per https://access.redhat.com/solutions/3480921
oreg_url=registry.access.redhat.com/openshift3/ose-${component}:${version}
openshift_examples_modify_imagestreams=true

VM deployment
openshift_cloudprovider_vsphere_template="rhel75-template"
openshift_cloudprovider_vsphere_vm_network="VM Network"
openshift_cloudprovider_vsphere_vm_netmask="255.255.254.0"
openshift_cloudprovider_vsphere_vm_gateway="10.x.y.254"
openshift_cloudprovider_vsphere_vm_dns="10.x.y.5"

# vSphere Cloud provider
openshift_cloudprovider_kind=vsphere
openshift_cloudprovider_vsphere_username="administrator@vsphere.local"
openshift_cloudprovider_vsphere_password="password"
openshift_cloudprovider_vsphere_host="vcsa65-dc1.example.com"
openshift_cloudprovider_vsphere_datacenter=Datacenter
openshift_cloudprovider_vsphere_cluster=Cluster
openshift_cloudprovider_vsphere_resource_pool=ResourcePool
openshift_cloudprovider_vsphere_datastore="datastore"
openshift_cloudprovider_vsphere_folder="folder"

# Service catalog
openshift_hosted_etcd_storage_kind=dynamic
openshift_hosted_etcd_storage_volume_name=etcd-vol
openshift_hosted_etcd_storage_access_modes=["ReadWriteOnce"]
openshift_hosted_etcd_storage_volume_size=1G
openshift_hosted_etcd_storage_labels={'storage': 'etcd'}

openshift_master_ldap_ca_file=/home/cloud-user/mycert.crt
openshift_master_identity_providers=[{'name': 'idm', 'challenge': 'true', 'login': 'true', 'kind': 'LDAPPasswordIdentityProvider', 'attributes': {'id': ['dn'], 'email': ['mail'], 'name': ['cn'], 'preferredUsername': ['uid']}, 'bindDN': 'uid=admin,cn=users,cn=accounts,dc=example,dc=com', 'bindPassword': 'ldapadmin', 'ca': '/etc/origin/master/ca.crt', 'insecure': 'false', 'url': 'ldap://ldap.example.com/cn=users,cn=accounts,dc=example,dc=com?uid?sub?(memberOf=cn=ose-user,cn=groups,cn=accounts,dc=openshift,dc=com)'}]

# Setup vsphere registry storage
openshift_hosted_registry_storage_kind=vsphere
openshift_hosted_registry_storage_access_modes=['ReadWriteOnce']
openshift_hosted_registry_storage_annotations=['volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume']
openshift_hosted_registry_replicas=1

openshift_hosted_router_replicas=3
openshift_master_cluster_method=native
openshift_node_local_quota_per_fsgroup=512Mi

default_subdomain=example.com
openshift_master_cluster_hostname=openshift.example.com
openshift_master_cluster_public_hostname=openshift.example.com
openshift_master_default_subdomain=apps.example.com

os_sdn_network_plugin_name='redhat/openshift-ovs-networkpolicy'
osm_use_cockpit=true

# Red Hat subscription name and password
rhsub_user=username
rhsub_pass=password
rhsub_pool=8a85f9815e9b371b015e9b501d081d4b

# metrics
openshift_metrics_install_metrics=true
openshift_metrics_storage_kind=dynamic
openshift_metrics_storage_volume_size=25Gi

# logging
openshift_logging_install_logging=true
openshift_logging_es_pvc_dynamic=true
openshift_logging_es_pvc_size=30Gi
openshift_logging_es_cluster_size=1
openshift_logging_es_nodeselector={"node-role.kubernetes.io/infra": "true"}
openshift_logging_kibana_nodeselector={"node-role.kubernetes.io/infra": "true"}
openshift_logging_curator_nodeselector={"node-role.kubernetes.io/infra": "true"}
openshift_logging_fluentd_nodeselector={"node-role.kubernetes.io/infra": "true"}
openshift_logging_storage_kind=dynamic

#registry
openshift_public_hostname=openshift.example.com

[ansible]
localhost

[masters]
master-0.example.com vm_name=master-0 ipv4addr=10.x.y.103
master-1.example.com vm_name=master-1 ipv4addr=10.x.y.104
master-2.example.com vm_name=master-2 ipv4addr=10.x.y.105

[infras]
infra-0.example.com vm_name=infra-0 ipv4addr=10.x.y.100
infra-1.example.com vm_name=infra-1 ipv4addr=10.x.y.101
infra-2.example.com vm_name=infra-2 ipv4addr=10.x.y.102

[apps]
app-0.example.com vm_name=app-0 ipv4addr=10.x.y.106
app-1.example.com vm_name=app-1 ipv4addr=10.x.y.107
app-2.example.com vm_name=app-2 ipv4addr=10.x.y.108

[etcd]
master-0.example.com
master-1.example.com
master-2.example.com

[lb]
haproxy-0.example.com vm_name=haproxy-0 ipv4addr=10.x.y.200

[nodes]
master-0.example.com openshift_node_group_name="node-config-master" openshift_schedulable=true openshift_hostname=master-0
master-1.example.com openshift_node_group_name="node-config-master" openshift_schedulable=true openshift_hostname=master-1
master-2.example.com openshift_node_group_name="node-config-master" openshift_schedulable=true openshift_hostname=master-2
infra-0.example.com openshift_node_group_name="node-config-infra" openshift_hostname=infra-0
infra-1.example.com openshift_node_group_name="node-config-infra" openshift_hostname=infra-1
infra-2.example.com openshift_node_group_name="node-config-infra" openshift_hostname=infra-2
app-0.example.com openshift_node_group_name="node-config-compute" openshift_hostname=app-0
app-1.example.com openshift_node_group_name="node-config-compute" openshift_hostname=app-1
app-2.example.com openshift_node_group_name="node-config-compute" openshift_hostname=app-2
Copy to Clipboard Toggle word wrap

22.2.2. オプション 2: OpenShift Container Platform での vSphere の手動設定

22.2.2.1. vSphere 向けのマスターホストの手動設定

全マスターホストで以下の手順を実行します。

手順

  1. すべてのマスターのデフォルトで /etc/origin/master/master-config.yaml に置かれているマスター設定ファイルを編集し、apiServerArguments および controllerArguments セクションの内容を更新します。

    kubernetesMasterConfig:
      ...
      apiServerArguments:
        cloud-provider:
          - "vsphere"
        cloud-config:
          - "/etc/origin/cloudprovider/vsphere.conf"
      controllerArguments:
        cloud-provider:
          - "vsphere"
        cloud-config:
          - "/etc/origin/cloudprovider/vsphere.conf"
    Copy to Clipboard Toggle word wrap
    重要

    コンテナー化インストールをトリガーすると、/etc/origin/var/lib/origin のディレクトリーのみがマスターとノードのコンテナーにマウントされます。したがって、master-config.yaml/etc/ ではなく /etc/origin/master になければなりません。

  2. Ansible を使用して vSphere 用に OpenShift Container Platform を設定する場合には、/etc/origin/cloudprovider/vsphere.conf ファイルは自動的に作成されます。vSphere 用の OpenShift Container Platform を手動で設定するので、このファイルを作成して、以下を入力する必要があります。

    [Global] 
    1
    
            user = "myusername" 
    2
    
            password = "mypassword" 
    3
    
            port = "443" 
    4
    
            insecure-flag = "1" 
    5
    
            datacenter = "mydatacenter" 
    6
    
    
    [VirtualCenter "10.10.0.2"] 
    7
    
            user = "myvCenterusername"
            password = "password"
    
    [VirtualCenter "10.10.0.3"] 
    8
    
            port = "448"
            insecure-flag = "0"
    
    [Workspace] 
    9
    
            server = "10.10.0.2" 
    10
    
            datacenter = "mydatacenter"
            folder = "path/to/vms" 
    11
    
            datastore = "shared-datastore" 
    12
    
            resourcepool-path = "myresourcepoolpath" 
    13
    
    
    [Disk]
            scsicontrollertype = pvscsi 
    14
    
    
    [Network]
            public-network = "VM Network" 
    15
    Copy to Clipboard Toggle word wrap
    1
    [Global] セクションに設定されるプロパティーは、個別の [VirtualCenter] セクションの設定で上書きされない限り、すべての指定される vcenter で使用されます。
    2
    vSphere クラウドプロバイダーの vCenter ユーザー名。
    3
    指定されたユーザーの vCenter パスワード。
    4
    オプション。vCenter サーバーのポート番号。デフォルトはポート 443 になります。
    5
    vCenter が自己署名証明書を使用している場合は 1 に設定します。
    6
    ノード VM がデプロイされているデータセンターの名前。
    7
    この Virtual Center の特定の [Global] プロパティーを上書きします。使用できる設定は [Port][user][insecure-flag][datacenters] です。指定されない設定は [Global] セクションからプルされます。
    8
    オプション。追加の vCenter サーバーです。
    9
    各種の vSphere Cloud Provider 機能で使用されるプロパティーを設定します。たとえば、動的プロビジョニング、ストレージプロファイルベースのボリュームプロビジョニングなどがこれに含まれます。
    10
    vCenter サーバーの IP アドレスまたは FQDN。
    11
    ノード VM の VM ディレクトリーへのパス。
    12
    ストレージクラスまたは動的プロビジョニングを使ったボリュームのプロビジョニングに使用されるデータストアの名前に設定されます。OpenShift Container Platform 3.9 よりも前のバージョンでは、データストアがストレージディレクトリーにあるか、またはデータストアクラスターのメンバーである場合には、完全パスが必要でした。
    13
    オプション。ストレージプロファイルベースのボリュームプロビジョニングのダミー VM が作成される必要のあるリソースプールのパスに設定されます。
    14
    VMDK が VM に割り当てられる際に設定される SCSI コントローラーのタイプ。
    15
    vSphere がノードにアクセスするために使用されるネットワークポートグループに設定されます。これはデフォルトで VM ネットワークと呼ばれます。これは Kubernetes に登録されているノードホストの ExternalIP です。

    クラスターインストールプロセスでは、デフォルトでシングルゾーンまたは単一の vCenter を設定します。

    異なるゾーンの vSphere に OpenShift Container Platform をデプロイすると、単一障害点を回避しやすくなりますが、ゾーン間での共有ストレージの必要が生じます。OpenShift Container Platform ノードのホストがゾーン A でダウンした場合、Pod はゾーン B に移動する必要があります。詳細情報は、Kubernetes ドキュメントの マルチゾーンの制限について参照してください。

    重要

    この設定により、VMDK は常に一貫性のある UUID を VM に提示し、ディスクは正常にマウントされます。

    クラスターに参加するすべての仮想マシンノードについて、「VM properties」 「VM Options」 「Advanced」 「Configuration Parameters」 「disk.enabledUUID=TRUE」を設定します。

    または、GOVC ツールを使用することもできます。

    1. GOVC 環境をセットアップします。

      export GOVC_URL='vCenter IP OR FQDN'
      export GOVC_USERNAME='vCenter User'
      export GOVC_PASSWORD='vCenter Password'
      export GOVC_INSECURE=1
      Copy to Clipboard Toggle word wrap
  3. ノード VM パスを見つけます。

    govc ls /datacenter/vm/<vm-folder-name>
    Copy to Clipboard Toggle word wrap
    1. すべての VM で disk.EnableUUID を true に設定します。

      govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
      Copy to Clipboard Toggle word wrap
      注記

      OpenShift Container Platform ノード VM がテンプレート VM で作成されている場合、disk.EnableUUID=1 をテンプレート VM に設定することができます。このテンプレートからクローン作成される VM はこのプロパティーを継承します。

  4. OpenShift Container Platform サービスを再起動します。

    # master-restart api
    # master-restart controllers
    # systemctl restart atomic-openshift-node
    Copy to Clipboard Toggle word wrap

22.2.2.2. vSphere 向けのノードホストの手動設定

全ノードホスト上で以下を実行します。

手順

vSphere について OpenShift Container Platform ノードを設定するには、以下を実行します。

  1. 適切なノード設定マップを編集して、kubeletArguments セクションの内容を更新します。

    kubeletArguments:
      cloud-provider:
        - "vsphere"
      cloud-config:
        - "/etc/origin/cloudprovider/vsphere.conf"
    Copy to Clipboard Toggle word wrap
    重要

    クラウドプロバイダーの統合を正常に機能させるため、nodeName は vSphere の VM 名と一致していなければなりません。また、この名前は RFC1123 に準拠している必要もあります。

  2. すべてのノードで OpenShift Container Platform サービスを再起動します。

    # systemctl restart atomic-openshift-node
    Copy to Clipboard Toggle word wrap

22.2.2.3. 設定変更の適用

マスターおよびノードのすべてのホストで OpenShift Container Platform サービスを起動または再起動し、設定の変更を適用します。「OpenShift Container Platform サービスの再起動」を参照してください。

# master-restart api
# master-restart controllers
# systemctl restart atomic-openshift-node
Copy to Clipboard Toggle word wrap

クラウドプロバイダーを使用しない状態から、使用するように切り替えると、エラーメッセージが表示されます。クラウドプロバイダーを追加すると、ノードが hostnameexternalID として使用する (クラウドプロバイダーが使用されていなかった場合のケース) 代わりに、クラウドプロバイダーの instance-id (クラウドプロバイダーによって指定される) の使用に切り替えるため、ノードの削除が試みられます。この問題を解決するには、以下を実行します。

  1. CLI にクラスター管理者としてログインします。
  2. 既存のノードラベルをチェックし、これらをバックアップします。

    $ oc describe node <node_name> | grep -Poz '(?s)Labels.*\n.*(?=Taints)'
    Copy to Clipboard Toggle word wrap
  3. ノードを削除します。

    $ oc delete node <node_name>
    Copy to Clipboard Toggle word wrap
  4. 各ノードホストで OpenShift Container Platform サービスを再起動します。

    # systemctl restart atomic-openshift-node
    Copy to Clipboard Toggle word wrap
  5. 以前に使用していた各ノードのラベルを再度追加します。

22.2.3. OpenShift Container Platform が vSphere ストレージを使用するように設定する

OpenShift Container Platform では、VMWare vSphere の仮想マシンディスク (VMDK: Virtual Machine Disk) ボリュームがサポートされます。VMWare vSphere を使用して、OpenShift Container Platform クラスターに永続ストレージをプロビジョニングできます。これには、Kubernetes と VMWare vSphere についてのある程度の理解があることが前提となります。

OpenShift Container Platform は vSphere にディスクを作成し、ディスクを適切なインスタンスに割り当てます。

OpenShift Container Platform の永続ボリューム (PV) フレームワークを使用すると、管理者がクラスターに永続ストレージをプロビジョニングできるようになるだけでなく、ユーザーが、基盤となるインフラストラクチャーに精通していなくてもこれらのリソースを要求できるようになります。VMWare vSphere VMDK ボリュームは、動的にプロビジョニングできます。

永続ボリュームは、単一のプロジェクトまたは namespace にバインドされず、OpenShift Container Platform クラスター全体で共有できます。ただし、PVC (永続ボリューム要求) は、プロジェクトまたは namespace に固有で、ユーザーによる要求が可能です。

重要

インフラストラクチャーにおけるストレージの高可用性は、基礎となるストレージのプロバイダーに委ねられています。

前提条件

vSphere を使用して永続ボリュームを作成する前に、OpenShift Container Platform クラスターが以下の要件を満たしていることを確認してください。

  • 最初に、OpenShift Container Platform で vSphere Cloud Provider について設定する必要があります。
  • インフラストラクチャー内の各ノードホストは、vSphere 仮想マシン名に一致する必要があります。
  • それぞれのノードホストは、同じリソースグループに属している必要があります。

22.2.3.1. VMware vSphere ボリュームのプロビジョニング

OpenShift Container Platform でストレージをボリュームとしてマウントするには、ストレージが基礎となるインフラストラクチャーに存在している必要があります。OpenShift Container Platform が vSpehere 用に設定されていることを確認した後、OpenShift Container Platform と vSphere に必要になるのは、VM フォルダーパス、ファイルシステムタイプ、および PersistentVolume API のみです。

22.2.3.1.1. 永続ボリュームの作成
  1. vsphere-pv.yaml などの PV オブジェクト定義を定義します。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv0001 
    1
    
    spec:
      capacity:
        storage: 2Gi 
    2
    
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      vsphereVolume: 
    3
    
        volumePath: "[datastore1] volumes/myDisk" 
    4
    
        fsType: ext4 
    5
    Copy to Clipboard Toggle word wrap
    1
    ボリュームの名前です。これを使用して、PVC (永続ボリューム要求) で、または Pod から、ボリュームを識別する必要があります。
    2
    このボリュームに割り当てられるストレージの量。
    3
    使用されるボリュームタイプです。この例では、 vsphereVolume を使用し、ラベルは、vSphere VMDK ボリュームを Pod にマウントするために使用されます。ボリュームがアンマウントされてもボリュームのコンテンツは保持されます。このボリュームタイプは、VMFS データストアと VSAN データストアをサポートします。
    4
    VMDK ボリュームが存在し、ボリューム定義内に括弧 ([]) を含める必要があります。
    5
    マウントするファイルシステムタイプです。ext4xfs、または他のファイルシステムなどが例となります。
    重要

    ボリュームをフォーマットしてプロビジョニングした後に fsType パラメーターの値を変更すると、データ損失や Pod にエラーが発生する可能性があります。

  2. PV を作成します。

    $ oc create -f vsphere-pv.yaml
      persistentvolume "pv0001" created
    Copy to Clipboard Toggle word wrap
  3. PV が作成されたことを確認します。

    $ oc get pv
    NAME    LABELS  CAPACITY  ACCESSMODES   STATUS    CLAIM   REASON  AGE
    pv0001  <none>  2Gi       RWO           Available                 2s
    Copy to Clipboard Toggle word wrap

これで、PVC (永続ボリューム要求) を使用してストレージを要求し、永続ボリュームを活用できるようになります。

重要

PVC (永続ボリューム要求) は、ユーザーの namespace にのみ存在し、同じ namespace 内の Pod からしか参照できません。別の namespace から永続ボリュームにアクセスしようとすると、Pod にエラーが発生します。

22.2.3.1.2. VMware vSphere ボリュームのフォーマット

OpenShift Container Platform は、ボリュームをマウントしてコンテナーに渡す前に、永続ボリューム定義の fsType パラメーターで指定されたファイルシステムがボリュームにあるかどうか確認します。デバイスが指定されたファイルシステムでフォーマットされていない場合、デバイスのデータはすべて消去され、デバイスはそのファイルシステムで自動的にフォーマットされます。

これにより、OpenShift Container Platform がフォーマットされていない vSphere ボリュームを初回の使用前にフォーマットするため、それらを永続ボリュームとして使用できるようになります。

22.2.3.2. ストレージクラスを使用した VMware vSphere ボリュームのプロビジョニング

  1. OpenShift Container Platform は、vsphere-volume プロビジョナーを使用する場合、および Ansible インベントリーで openshift_cloudprovider_kind=vsphere および openshift_vsphere_* 変数を使用する場合に、以下の storageclass を作成します。その他の方法として、これを手動で作成することもできます。

    $ oc get --export storageclass vsphere-standard -o yaml
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: "vsphere-standard" 
    1
    
    provisioner: kubernetes.io/vsphere-volume 
    2
    
    parameters:
        diskformat: zeroedthick 
    3
    
        datastore: "ose3-vmware" 
    4
    
    reclaimPolicy: Delete
    Copy to Clipboard Toggle word wrap
    1
    ストレージクラス名
    2
    ストレージプロビジョナーのタイプ: vsphere-volume
    3
    ディスクのタイプ: zeroedthick、thin
    4
    ディスクが作成されるソースデータストア。
  2. PV を要求して、以前の手順で示した storageclass を使用すると、OpenShift Container Platform は vSphere インフラストラクチャーにディスクを作成します。ディスクが作成されたことを確認するには以下を実行します。

    $ ls /vmfs/volumes/ose3-vmware/kubevols | grep kubernetes
    kubernetes-dynamic-pvc-790615e8-a22a-11e8-bc85-0050568e2982.vmdk
    Copy to Clipboard Toggle word wrap
注記

vSphere ボリュームディスクは ReadWriteOnce アクセスモードで、1 つのノードで読み取り/書き込み可能な状態でボリュームをマウントできます。詳細情報は、『アーキテクチャーガイド』の「アクセスモード」のセクション を参照してください。

22.2.4. vSphere の OpenShift Container Platform レジストリーの設定

以下の手順は、ストレージクラスが利用できないか、または使用されていない場合にレジストリーのストレージを作成するために使用されるストレージ作成の手動プロセスを定義しています。

# VMFS
cd /vmfs/volumes/datastore1/
mkdir kubevols # Not needed but good hygiene

# VSAN
cd /vmfs/volumes/vsanDatastore/
/usr/lib/vmware/osfs/bin/osfs-mkdir kubevols # Needed

cd kubevols

vmkfstools -c 25G registry.vmdk
Copy to Clipboard Toggle word wrap

22.2.4.1. Ansible を使用した vSphere の OpenShift Container Platform レジストリーの設定

手順

レジストリーで vSphere ボリュームを使用できるように Ansible インベントリーを設定するには、以下を実行します。

[OSEv3:vars]
# vSphere Provider Configuration
openshift_hosted_registry_storage_kind=vsphere 
1

openshift_hosted_registry_storage_access_modes=['ReadWriteOnce'] 
2

openshift_hosted_registry_storage_annotations=['volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume'] 
3

openshift_hosted_registry_replicas=1 
4
Copy to Clipboard Toggle word wrap
1
ストレージタイプ。
2
vSphere ボリュームは RWO のみをサポートします。
3
ボリュームのアノテーション。
4
設定するレプリカ数
注記

上記の設定ファイルでは括弧が必要です。

22.2.4.2. vSphere の OpenShift Container Platform レジストリーの手動設定

vSphere ボリュームストレージを使用するには、レジストリーの設定ファイルを編集してレジストリー Pod にマウントします。

手順

  1. vSphere ボリュームから新規設定ファイルを作成します。

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: vsphere-registry-storage
        annotations:
          volume.beta.kubernetes.io/storage-class: vsphere-standard
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 30Gi
    Copy to Clipboard Toggle word wrap
  2. OpenShift Container Platform でファイルを作成します。

    $ oc create -f pvc-registry.yaml
    Copy to Clipboard Toggle word wrap
  3. 新規 PVC を使用するようにボリューム設定を更新します。

    $ oc volume dc docker-registry --add --name=registry-storage -t \
    pvc --claim-name=vsphere-registry-storage --overwrite
    Copy to Clipboard Toggle word wrap
  4. 更新された設定を読み取るためにレジストリーを再デプロイします。

    $ oc rollout latest docker-registry -n default
    Copy to Clipboard Toggle word wrap
  5. ボリュームが割り当てられていることを確認します。

    $ oc volume dc docker-registry -n default
    Copy to Clipboard Toggle word wrap

22.3. 永続ボリュームのバックアップ

OpenShift Container Platform は、自由にクラスター内のノードにあるボリュームをアタッチしたり、アタッチ解除できるように、個別の永続ディスク として新規ボリュームをプロビジョニングします。そのため、スナップショットを使用するボリュームはバックアップできません

以下の方法で、PV のバックアップを作成します。

  1. PV を使用してアプリケーションを停止します。
  2. 永続ディスクのクローンを作成します。
  3. アプリケーションを再起動します。
  4. クローンしたディスクのバックアップを作成します。
  5. クローンしたディスクを削除します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat