准备虚拟化环境
为了项目人员能在容器平台中完整使用虚拟化功能,平台管理员需分别进行以下操作以准备虚拟化环境。
前提条件
使用虚拟化功能时,需提前规划并准备网络及存储环境。
注意:
-
如需通过 IP 直连虚拟机,集群需使用 Kube-OVN Underlay 网络模式,可参考最佳实践 准备 Kube-OVN Underlay 物理网络 。
-
推荐使用 TopoLVM 配合 Kubevirt 使用,可提供接近硬件水平的性能。如对性能要求不高,也可使用 Ceph 分布式存储。
存储产品 说明 TopoLVM 优点:比较轻量,性能好。缺点:不能跨节点使用,可靠性不高,无法提供冗余能力。 Ceph 分布式存储 优点:可跨节点使用,高可用,具备冗余能力。缺点:多副本磁盘冗余,使用率较低;性能较差。 -
如果使用 TopoLVM 并配置了多个磁盘,请确保开启虚拟化的节点剩余存储空间容量能满足多个磁盘容量总和,否则将导致虚拟机创建失败。
-
如果使用 Ceph 分布式存储,请确保存储所在的网络和虚拟机所在的网络可以互通。
-
开启节点虚拟化
当自建集群的节点是 物理机 时,可通过开启节点虚拟化开关,来控制是否允许 Kubernetes 将虚拟机(VMI,VirtualMachineInstance)调度到该节点上。
-
当开关开启时,新创建的虚拟机,允许被调度到该物理机节点上;Windows 物理节点不支持开启虚拟化。
-
当开关关闭时,禁止新创建的虚拟机被调度到该物理机节点上,但是不影响该节点上已经在运行的虚拟机。
操作步骤
-
在左侧导航栏中,单击 集群管理 > 集群。
-
单击 自建集群名称。
-
在 节点 页签下,单击待设置虚拟化开关节点右侧的
> 开启虚拟化。
-
单击 确认。
部署 KubeVirt Operator
请参考 安装 Operator 文档安装 KubeVirt HyperConverged Cluster Operator。
注意:在 安装模式 参数中,您须选择 命名空间模式 并部署到 kubevirt 命名空间下。
创建 HyperConverged 实例
-
在左侧导航栏中,单击 应用商店管理 > Operators。
-
在 已部署 Operators 页签中,单击 kubevirt-operator。
-
单击 HyperConverged 实例卡片中的 创建实例。
说明:每个集群中,仅需要创建 1 个 HyperConverged 实例。
-
切换至 YAML 视图,根据以下示例配置 虚拟机镜像仓库地址。
apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: kubevirt spec: storageImport: insecureRegistries: - "192.168.16.214:60080" # 虚拟机镜像仓库地址
说明:其他参数(例如:名称)使用默认值即可。
-
等待资源列表中自动创建出 CDI 和 KubeVirt 类型的实例,且 YAML 中显示的 status.phase 均为
deployed
状态时,HyperConverged 实例创建成功。
配置虚拟机超售比(可选)
如需为虚拟机配置超售比,请进入已部署的 KubeVirt Operator 中单独配置。
注意事项
-
配置虚拟机超售比前,请先在 集群管理 > 集群 中关闭虚拟机所在集群的超售比;或者在 项目管理 > 命名空间 中关闭虚拟机所在命名空间的超售比。
-
虚拟机仅支持配置 CPU 超售比,推荐配置值为 2~4。
-
开启虚拟机的超售比后,创建虚拟机时,容器的请求值(requests)固定为 指定的限制值(limits)/虚拟机超售比,用户通过 YAML 设定 request 无效。 例如:假定设置虚拟机的 CPU 资源超售比为 4,用户创建虚拟机时,指定了 CPU 限制值为 4c,则 CPU 请求值为 4c/4 = 1c。
操作步骤
-
在左侧导航栏中,单击 应用商店管理 > Operators。
-
在 已部署 Operators 页签中单击 kubevirt-operator。
-
单击 资源实例 页签,更新 kubevirt-hyperconverged 资源实例,切换至 YAML 视图,在 annotation 部分添加如下字段:
kubevirt.kubevirt.io/jsonpatch: |- [ { "op": "add", "path": "/spec/configuration/developerConfiguration", "value": {"cpuAllocationRatio": 4} # 本例中 CPU 超售比配置为 4 } ]
-
单击 更新。
资源配额说明
虚拟机的内存资源配额,受限于其所在命名空间的内存资源配额。由于承载虚拟机的 Pod 内存通常大于虚拟机实际可用内存,因此推荐预留 20% 的资源。当命名空间剩余可用资源不足 20% 时,请及时扩容。