第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 ツールのインストール」を参照してください。
手順
- VM フォルダーを作成し、OpenShift Container Platform ノード VM をこのフォルダーに移動します。
ノードの VM 名が正規表現
[a-z](()?[0-9a-z])?(\.[a-z0-9](([-0-9a-z])?[0-9a-z])?)*
に従っていることを確認します。重要VM 名については、以下が禁止されています。
- 数字を先頭に使用する。
- 大文字を使用する。
-
-
以外の特殊文字を使用する。 - 3 文字未満、64 文字以上の文字数にする。
各ノードについて
disk.EnableUUID
パラメーターをtrue
に設定します。これにより、VMware vSphere の Virtual Machine Disk (VMDK) が常に一貫性のある UUID を VM に提示し、ディスクが正常にマウントされるようになります。クラスターに参加するすべての vSphere 仮想マシンノードについて、vSphere コンソールを使用して以下の手順を実行します。
「VM properties」
「VM Options」 「Advanced」 「Configuration Parameters」 「disk.enabledUUID=TRUE」に移動します。 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
ノード VM パスを見つけます。
govc ls /datacenter/vm/<vm-folder-name>
すべての VM について、
disk.EnableUUID
をtrue
に設定します。govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
OpenShift Container Platform ノード VM がテンプレート VM で作成されている場合、disk.EnableUUID=1
をテンプレート VM に設定することができます。このテンプレートからクローン作成される VM はこのプロパティーを継承します。
ロールを作成して、ロールを 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 インベントリーファイルを変更して行うことができます。
手順
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
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 向けのマスターホストの手動設定
全マスターホストで以下の手順を実行します。
手順
すべてのマスターのデフォルトで /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 になければなりません。
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 ツールを使用することもできます。
GOVC 環境をセットアップします。
export GOVC_URL='vCenter IP OR FQDN' export GOVC_USERNAME='vCenter User' export GOVC_PASSWORD='vCenter Password' export GOVC_INSECURE=1
ノード VM パスを見つけます。
govc ls /datacenter/vm/<vm-folder-name>
すべての VM で disk.EnableUUID を true に設定します。
govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
注記OpenShift Container Platform ノード VM がテンプレート VM で作成されている場合、
disk.EnableUUID=1
をテンプレート VM に設定することができます。このテンプレートからクローン作成される VM はこのプロパティーを継承します。
OpenShift Container Platform サービスを再起動します。
# master-restart api # master-restart controllers # systemctl restart atomic-openshift-node
22.2.2.2. vSphere 向けのノードホストの手動設定
全ノードホスト上で以下を実行します。
手順
vSphere について OpenShift Container Platform ノードを設定するには、以下を実行します。
適切なノード設定マップを編集して、
kubeletArguments
セクションの内容を更新します。kubeletArguments: cloud-provider: - "vsphere" cloud-config: - "/etc/origin/cloudprovider/vsphere.conf"
重要クラウドプロバイダーの統合を正常に機能させるため、
nodeName
は vSphere の VM 名と一致していなければなりません。また、この名前は RFC1123 に準拠している必要もあります。すべてのノードで 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
クラウドプロバイダーを使用しない状態から、使用するように切り替えると、エラーメッセージが表示されます。クラウドプロバイダーを追加すると、ノードが hostname を externalID
として使用する (クラウドプロバイダーが使用されていなかった場合のケース) 代わりに、クラウドプロバイダーの instance-id
(クラウドプロバイダーによって指定される) の使用に切り替えるため、ノードの削除が試みられます。この問題を解決するには、以下を実行します。
- CLI にクラスター管理者としてログインします。
既存のノードラベルをチェックし、これらをバックアップします。
$ oc describe node <node_name> | grep -Poz '(?s)Labels.*\n.*(?=Taints)'
ノードを削除します。
$ oc delete node <node_name>
各ノードホストで OpenShift Container Platform サービスを再起動します。
# systemctl restart atomic-openshift-node
- 以前に使用していた各ノードのラベルを再度追加します。
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. 永続ボリュームの作成
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
- マウントするファイルシステムタイプです。
ext4
、xfs
、または他のファイルシステムなどが例となります。
重要ボリュームをフォーマットしてプロビジョニングした後に
fsType
パラメーターの値を変更すると、データ損失や Pod にエラーが発生する可能性があります。PV を作成します。
$ oc create -f vsphere-pv.yaml persistentvolume "pv0001" created
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 ボリュームのプロビジョニング
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
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
上記の設定ファイルでは括弧が必要です。
22.2.4.2. vSphere の OpenShift Container Platform レジストリーの手動設定
vSphere ボリュームストレージを使用するには、レジストリーの設定ファイルを編集してレジストリー Pod にマウントします。
手順
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
OpenShift Container Platform でファイルを作成します。
$ oc create -f pvc-registry.yaml
新規 PVC を使用するようにボリューム設定を更新します。
$ oc volume dc docker-registry --add --name=registry-storage -t \ pvc --claim-name=vsphere-registry-storage --overwrite
更新された設定を読み取るためにレジストリーを再デプロイします。
$ oc rollout latest docker-registry -n default
ボリュームが割り当てられていることを確認します。
$ oc volume dc docker-registry -n default
22.3. 永続ボリュームのバックアップ
OpenShift Container Platform は、自由にクラスター内のノードにあるボリュームをアタッチしたり、アタッチ解除できるように、個別の永続ディスク として新規ボリュームをプロビジョニングします。そのため、スナップショットを使用するボリュームはバックアップできません。
以下の方法で、PV のバックアップを作成します。
- PV を使用してアプリケーションを停止します。
- 永続ディスクのクローンを作成します。
- アプリケーションを再起動します。
- クローンしたディスクのバックアップを作成します。
- クローンしたディスクを削除します。