第 25 章 为 VMware vSphere 配置
您可以将 OpenShift Container Platform 配置为使用 VMware vSphere VMDK 作为 PersistentVolume。此配置可以包括 使用 VMware vSphere VMDK 作为应用程序数据的持久性存储。
vSphere Cloud Provider 允许在 OpenShift Container Platform 中使用 vSphere 管理的存储,并支持 Kubernetes 使用的每个存储:
- PersistentVolume(PV)
- PersistentVolumesClaim (PVC)
- StorageClass
有状态容器化应用程序请求的 PersistentVolume 可以在 VMware vSAN、VVOL、VMFS 或 NFS 数据存储上置备。
Kubernetes PV 在 Pod 规格中定义。如果您使用静态置备,当使用静态置备时,可以直接引用 VMDK 文件,或者首选使用 Dynamic Provisioning。
对 vSphere Cloud Provider 的最新更新位于 vSphere Storage for Kubernetes。
25.1. 开始前
25.1.1. 要求
VMware vSphere
不支持独立 ESXi。
- 如果您希望支持完整的 VMware Validate Design,则需要 vSphere 版本 6.0.x 最少使用 6.7 U1b 版本。
支持 vSAN、VMFS 和 NFS。
- VSAN 支持仅限于一个 vCenter 中的集群。
OpenShift Container Platform 3.11 支持并部署到 vSphere 7 集群上。如果您使用 vSphere in-tree 存储驱动程序、vSAN、VMFS 和 NFS 存储选项。
先决条件
您必须在每个 Node 虚拟机上安装 VMware 工具。如需更多信息,请参阅安装 VMware 工具。
您可以使用开源 VMware govmomi
CLI 工具进行额外的配置和故障排除。例如,请参阅以下 govc
CLI 配置:
export GOVC_URL='vCenter IP OR FQDN' export GOVC_USERNAME='vCenter User' export GOVC_PASSWORD='vCenter Password' export GOVC_INSECURE=1
25.1.1.1. 权限
创建角色并分配给 vSphere Cloud Provider。需要具有所需权限集的 vCenter 用户。
通常,分配给 vSphere Cloud Provider 的 vSphere 用户必须具有以下权限:
-
对节点虚拟机的父实体,如
文件夹
、主机
、数据中心、数据存储文件夹、数据存储群集等的Read
权限。 -
VirtualMachine.Inventory.Create/Delete
permissions on thevsphere.conf
定义的资源池 - 用于创建和删除测试虚拟机。
有关创建自定义角色、用户和角色分配的步骤,请参阅 vSphere 文档中心。
vSphere Cloud Provider 支持跨越多个 vCenter 的 OpenShift Container Platform 集群。请确定为所有 vCenter 正确设置了所有以上权限。
建议采用动态持久性卷创建。
角色 | 权限 | 实体 | 传播到子对象 |
---|---|---|---|
manage-k8s-node-vms | Resource.AssignVMToPool, VirtualMachine.Config.AddExistingDisk, VirtualMachine.Config.AddNewDisk, VirtualMachine.Config.AddRemoveDevice, VirtualMachine.Config.RemoveDisk, VirtualMachine.Inventory.Create, VirtualMachine.Inventory.Delete, VirtualMachine.Config.Settings | Cluster, Hosts, VM Folder | 是 |
manage-k8s-volumes | Datastore.AllocateSpace, Datastore.FileManagement(低级别文件操作) | 数据存储 | 否 |
k8s-system-read-and-spbm-profile-view | StorageProfile.View(Profile 驱动的存储视图) | vCenter | 否 |
只读(不存在的默认角色) | system.Anonymous、system.Read、System.View | Data, Datastore Cluster, Datastore Storage Folder | 否 |
如果创建 PVC 与静态置备的 PV 绑定,并将重新声明策略设置为删除,则只有 manage-k8s-volumes role 需要 Datastore.FileManagement。删除 PVC 时,关联的静态置备的 PV 也会被删除。
角色 | 权限 | 实体 | 传播到 Children |
---|---|---|---|
manage-k8s-node-vms | VirtualMachine.Config.AddExistingDisk, VirtualMachine.Config.AddNewDisk, VirtualMachine.Config.AddRemoveDevice, VirtualMachine.Config.RemoveDisk | VM Folder | 是 |
manage-k8s-volumes | Datastore.FileManagement(低级别文件操作) | 数据存储 | 否 |
只读(不存在的默认角色) | system.Anonymous、system.Read、System.View | vCenter, Datacenter, Datastore Cluster, Datastore Storage Folder, Cluster, Hosts | no … |
流程
- 创建虚拟机 文件夹 并将 OpenShift Container Platform 节点虚拟机移到这个文件夹。
为每个 Node 虚拟机将
disk.EnableUUID
参数设置为true
。这个设置可确保 VMware vSphere 的 Virtual Machine Disk (VMDK) 始终为虚拟机显示一致的 UUID,允许正确挂载磁盘。每个要加入集群的 VM 节点都必须将
disk.EnableUUID
参数设置为true
。要设置这个值,请按照 vSphere 控制台或govc
CLI 工具的步骤进行操作:-
在 vSphere HTML Client 中,导航到 VM properties
VM Options Advanced Configuration Parameters disk.enableUUID=TRUE 或使用 govc CLI 来查找 Node VM 路径:
$govc ls /datacenter/vm/<vm-folder-name>
将所有虚拟机的
disk.EnableUUID
设置为true
:$govc vm.change -e="disk.enableUUID=1" -vm='VM Path'
-
在 vSphere HTML Client 中,导航到 VM properties
如果从虚拟机模板创建了 OpenShift Container Platform 节点虚拟机,您可以在模板虚拟机上设置 disk.EnableUUID=1
。从该模板克隆的虚拟机将继承此属性。
25.1.1.2. 将 OpenShift Container Platform 与 vMotion 搭配使用
OpenShift Container Platform 通常支持仅计算 vMotion。使用 Storage vMotion 可能会导致问题且不受支持。
如果您在 pod 中使用 vSphere 卷,请手动或通过 Storage vMotion 在数据存储间迁移虚拟机,这会导致 OpenShift Container Platform 持久性卷(PV)对象中的无效引用。这些引用可防止受影响的 pod 启动,并可能导致数据丢失。
同样,OpenShift Container Platform 不支持在数据存储间有选择地迁移 VMDK,使用数据存储集群进行虚拟机置备或动态或静态置备 PV,或使用作为数据存储集群一部分的数据存储来动态或静态置备 PV。