Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

第 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 the vsphere.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 …​

流程

  1. 创建虚拟机 文件夹 并将 OpenShift Container Platform 节点虚拟机移到这个文件夹。
  2. 为每个 Node 虚拟机将 disk.EnableUUID 参数设置为 true。这个设置可确保 VMware vSphere 的 Virtual Machine Disk (VMDK) 始终为虚拟机显示一致的 UUID,允许正确挂载磁盘。

    每个要加入集群的 VM 节点都必须将 disk.EnableUUID 参数设置为 true。要设置这个值,请按照 vSphere 控制台或 govc CLI 工具的步骤进行操作:

    1. 在 vSphere HTML Client 中,导航到 VM propertiesVM OptionsAdvancedConfiguration Parametersdisk.enableUUID=TRUE
    2. 或使用 govc CLI 来查找 Node VM 路径:

      $govc ls /datacenter/vm/<vm-folder-name>
      1. 将所有虚拟机的 disk.EnableUUID 设置为 true

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

如果从虚拟机模板创建了 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。