第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
    2. ノード VM パスを見つけます。

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

      govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
注記

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

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

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

    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
    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

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"
    重要

    コンテナー化インストールをトリガーすると、/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
    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
  3. ノード VM パスを見つけます。

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

      govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
      注記

      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

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

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

手順

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

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

    kubeletArguments:
      cloud-provider:
        - "vsphere"
      cloud-config:
        - "/etc/origin/cloudprovider/vsphere.conf"
    重要

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

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

    # systemctl restart atomic-openshift-node

22.2.2.3. 設定変更の適用

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

# master-restart api
# master-restart controllers
# systemctl restart atomic-openshift-node

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

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

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

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

    # systemctl restart atomic-openshift-node
  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
    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
  3. PV が作成されたことを確認します。

    $ oc get pv
    NAME    LABELS  CAPACITY  ACCESSMODES   STATUS    CLAIM   REASON  AGE
    pv0001  <none>  2Gi       RWO           Available                 2s

これで、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
    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
注記

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

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
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
  2. OpenShift Container Platform でファイルを作成します。

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

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

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

    $ oc volume dc docker-registry -n default

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

© 2024 Red Hat, Inc.