This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第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 環境をセットアップします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノード VM パスを見つけます。
govc ls /datacenter/vm/<vm-folder-name>
govc ls /datacenter/vm/<vm-folder-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべての VM について、
disk.EnableUUID
をtrue
に設定します。govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift Container Platform ノード VM がテンプレート VM で作成されている場合、disk.EnableUUID=1
をテンプレート VM に設定することができます。このテンプレートからクローン作成される VM はこのプロパティーを継承します。
ロールを作成して、ロールを 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 インベントリーファイルを変更して行うことができます。
手順
Ansible インベントリーファイルに以下を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
リソースを作成できるようにするために必要です。
22.2.2. オプション 2: OpenShift Container Platform での vSphere の手動設定 リンクのコピーリンクがクリップボードにコピーされました!
22.2.2.1. vSphere 向けのマスターホストの手動設定 リンクのコピーリンクがクリップボードにコピーされました!
全マスターホストで以下の手順を実行します。
手順
すべてのマスターのデフォルトで /etc/origin/master/master-config.yaml に置かれているマスター設定ファイルを編集し、
apiServerArguments
およびcontrollerArguments
セクションの内容を更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要コンテナー化インストールをトリガーすると、/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 を手動で設定するので、このファイルを作成して、以下を入力する必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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
export GOVC_URL='vCenter IP OR FQDN' export GOVC_USERNAME='vCenter User' export GOVC_PASSWORD='vCenter Password' export GOVC_INSECURE=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ノード VM パスを見つけます。
govc ls /datacenter/vm/<vm-folder-name>
govc ls /datacenter/vm/<vm-folder-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべての VM で disk.EnableUUID を true に設定します。
govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Container Platform ノード VM がテンプレート VM で作成されている場合、
disk.EnableUUID=1
をテンプレート VM に設定することができます。このテンプレートからクローン作成される VM はこのプロパティーを継承します。
OpenShift Container Platform サービスを再起動します。
master-restart api master-restart controllers systemctl restart atomic-openshift-node
# master-restart api # master-restart controllers # systemctl restart atomic-openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
22.2.2.2. vSphere 向けのノードホストの手動設定 リンクのコピーリンクがクリップボードにコピーされました!
全ノードホスト上で以下を実行します。
手順
vSphere について OpenShift Container Platform ノードを設定するには、以下を実行します。
適切なノード設定マップを編集して、
kubeletArguments
セクションの内容を更新します。kubeletArguments: cloud-provider: - "vsphere" cloud-config: - "/etc/origin/cloudprovider/vsphere.conf"
kubeletArguments: cloud-provider: - "vsphere" cloud-config: - "/etc/origin/cloudprovider/vsphere.conf"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要クラウドプロバイダーの統合を正常に機能させるため、
nodeName
は vSphere の VM 名と一致していなければなりません。また、この名前は RFC1123 に準拠している必要もあります。すべてのノードで OpenShift Container Platform サービスを再起動します。
systemctl restart atomic-openshift-node
# systemctl restart atomic-openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
22.2.2.3. 設定変更の適用 リンクのコピーリンクがクリップボードにコピーされました!
マスターおよびノードのすべてのホストで OpenShift Container Platform サービスを起動または再起動し、設定の変更を適用します。「OpenShift Container Platform サービスの再起動」を参照してください。
master-restart api master-restart controllers systemctl restart atomic-openshift-node
# 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 describe node <node_name> | grep -Poz '(?s)Labels.*\n.*(?=Taints)'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードを削除します。
oc delete node <node_name>
$ oc delete node <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各ノードホストで OpenShift Container Platform サービスを再起動します。
systemctl restart atomic-openshift-node
# systemctl restart atomic-openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 以前に使用していた各ノードのラベルを再度追加します。
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 オブジェクト定義を定義します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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
$ oc create -f vsphere-pv.yaml persistentvolume "pv0001" created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PV が作成されたことを確認します。
oc get pv
$ oc get pv NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE pv0001 <none> 2Gi RWO Available 2s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、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
を作成します。その他の方法として、これを手動で作成することもできます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow PV を要求して、以前の手順で示した storageclass を使用すると、OpenShift Container Platform は vSphere インフラストラクチャーにディスクを作成します。ディスクが作成されたことを確認するには以下を実行します。
ls /vmfs/volumes/ose3-vmware/kubevols | grep kubernetes
$ ls /vmfs/volumes/ose3-vmware/kubevols | grep kubernetes kubernetes-dynamic-pvc-790615e8-a22a-11e8-bc85-0050568e2982.vmdk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
vSphere ボリュームディスクは ReadWriteOnce
アクセスモードで、1 つのノードで読み取り/書き込み可能な状態でボリュームをマウントできます。詳細情報は、『アーキテクチャーガイド』の「アクセスモード」のセクション を参照してください。
22.2.4. vSphere の OpenShift Container Platform レジストリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順は、ストレージクラスが利用できないか、または使用されていない場合にレジストリーのストレージを作成するために使用されるストレージ作成の手動プロセスを定義しています。
22.2.4.1. Ansible を使用した vSphere の OpenShift Container Platform レジストリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順
レジストリーで vSphere ボリュームを使用できるように Ansible インベントリーを設定するには、以下を実行します。
上記の設定ファイルでは括弧が必要です。
22.2.4.2. vSphere の OpenShift Container Platform レジストリーの手動設定 リンクのコピーリンクがクリップボードにコピーされました!
vSphere ボリュームストレージを使用するには、レジストリーの設定ファイルを編集してレジストリー Pod にマウントします。
手順
vSphere ボリュームから新規設定ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform でファイルを作成します。
oc create -f pvc-registry.yaml
$ oc create -f pvc-registry.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規 PVC を使用するようにボリューム設定を更新します。
oc volume dc docker-registry --add --name=registry-storage -t \ pvc --claim-name=vsphere-registry-storage --overwrite
$ oc volume dc docker-registry --add --name=registry-storage -t \ pvc --claim-name=vsphere-registry-storage --overwrite
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された設定を読み取るためにレジストリーを再デプロイします。
oc rollout latest docker-registry -n default
$ oc rollout latest docker-registry -n default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ボリュームが割り当てられていることを確認します。
oc volume dc docker-registry -n default
$ oc volume dc docker-registry -n default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
22.3. 永続ボリュームのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、自由にクラスター内のノードにあるボリュームをアタッチしたり、アタッチ解除できるように、個別の永続ディスク として新規ボリュームをプロビジョニングします。そのため、スナップショットを使用するボリュームはバックアップできません。
以下の方法で、PV のバックアップを作成します。
- PV を使用してアプリケーションを停止します。
- 永続ディスクのクローンを作成します。
- アプリケーションを再起動します。
- クローンしたディスクのバックアップを作成します。
- クローンしたディスクを削除します。