更新时间:2025-04-27 GMT+08:00

安装虚拟机运行时支持

  1. 准备工作

    1. 下载kubectl和kubeconfig
      1. 从集群控制台下载客户端kubectl和用户配置文件kubeconfig,并将它们拷贝到客户端机器的/home目录下。
      2. 登录到您的客户端机器,配置kubectl:
        cd /home
        chmod +x kubectl
        mv -f kubectl /usr/local/bin
        mkdir -p $HOME/.kube
        mv -f kubeconfig.json $HOME/.kube/config
        kubectl config use-context internal
      3. 配置完成后,可以通过以下命令查看Kubernetes集群信息:
        kubectl cluster-info
    2. 执行以下命令获取KubeVirt的最新版本号:
      export VERSION=v1.5.0

  2. 在集群的API Server添加Aggregation Layer证书转发

    登录到集群管理节点的manifests目录/var/paas/kubernetes/manifests,编辑kube-apiserver.manifest文件,添加以下参数,进行修改API Server配置:

    --proxy-client-key-file=/srv/kubernetes/aggregation-tls.key
    --proxy-client-cert-file=/srv/kubernetes/aggregation-tls.crt

  3. 安装kubevirt-operator

    在客户端机器的/home目录中,执行以下命令:
    kubectl create -f "https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/kubevirt-operator.yaml"
    如安装成功,您将看到如下输出:
    namespace/kubevirt created
    customresourcedefinition.apiextensions.k8s.io/kubevirts.kubevirt.io created
    priorityclass.scheduling.k8s.io/kubevirt-cluster-critical created
    clusterrole.rbac.authorization.k8s.io/kubevirt.io:operator created
    serviceaccount/kubevirt-operator created
    role.rbac.authorization.k8s.io/kubevirt-operator created
    rolebinding.rbac.authorization.k8s.io/kubevirt-operator-rolebinding created
    clusterrole.rbac.authorization.k8s.io/kubevirt-operator created
    clusterrolebinding.rbac.authorization.k8s.io/kubevirt-operator created
    deployment.apps/virt-operator created

  4. 安装KubeVirt CR

    1. 下载并修改kubevirt的CR文件
      1. 下载KubeVirt的CR文件:
        curl -L https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/kubevirt-cr.yaml -o kubevirt-cr-cce.yaml
      2. 编辑kubevirt-cr-cce.yaml文件,添加以下内容:
        apiVersion: kubevirt.io/v1
        kind: KubeVirt
        metadata:
          name: kubevirt
          namespace: kubevirt
        spec:
          certificateRotateStrategy: {}
          configuration:
            developerConfiguration: {}
          customizeComponents:
            patches:
              - resourceType: DaemonSet
                resourceName: virt-handler
                patch: '{"spec": {"template": {"spec": {
                    "volumes": [
                      {"name": "kubelet-pods", "hostPath": {"path": "/mnt/paas/kubernetes/kubelet/pods"}},
                      {"name": "kubelet-pods-shortened", "hostPath": {"path": "/mnt/paas/kubernetes/kubelet/pods"}},
                      {"name": "device-plugin", "hostPath": {"path": "/mnt/paas/kubernetes/kubelet/device-plugins"}}
                    ],
                    "containers": [{
                      "name": "virt-handler",
                      "volumeMounts": [
                        {"name": "kubelet-pods", "mountPath": "/mnt/paas/kubernetes/kubelet/pods", "mountPropagation": "Bidirectional"},
                        {"name": "device-plugin", "mountPath": "/mnt/paas/kubernetes/kubelet/device-plugins"}
                      ]
                    }]
                  }}}}'
                type: strategic
            flags:
              handler:
                kubelet-pods-dir: /mnt/paas/kubernetes/kubelet/pods
                kubelet-root: /mnt/paas/kubernetes/kubelet
      3. 保存修改并执行:
        kubectl create -f ./kubevirt-cr-cce.yaml
        如顺利执行,您将看到以下输出:
        kubevirt.kubevirt.io/kubevirt created
        kubevirt.kubevirt.io/kubevirt created
    2. 等待安装情况
      watch -n 1 kubectl get kubevirt.kubevirt.io/kubevirt -n kubevirt -o=jsonpath="{.status.phase}"

      当状态从Deploying变为Deployed时,表示安装成功。

  5. 确认硬件虚拟化支持

    1. 执行以下命令安装虚拟化管理软件包libvirt-client:
      sudo apt-get install libvirt-client
    2. 使用以下命令,验证服务器是否支持虚拟化:
      virt-host-validate qemu
      • 如果出现以下情况,则表示服务器不支持硬件虚拟化:
        QEMU: Checking for hardware virtualization: FAIL (Only emulated CPUs are available, performance will be significantly limited)
      • 如果出现FAIL,可以打开KubeVirt的软件模拟,但请注意性能会显著下降:
        kubectl -n kubevirt patch kubevirt kubevirt --type=merge --patch '{"spec":{"configuration":{"developerConfiguration":{"useEmulation":true}}}}'

  6. 安装virtctl

    执行以下命令,安装KubeVirt命令行工具virtctl:

    VERSION=$(kubectl get kubevirt.kubevirt.io/kubevirt -n kubevirt -o=jsonpath="{.status.observedKubeVirtVersion}")
    ARCH=$(uname -s | tr A-Z a-z)-$(uname -m | sed 's/x86_64/amd64/') || windows-amd64.exe
    echo ${VERSION}-${ARCH}
    curl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-${ARCH}
    chmod +x virtctl
    sudo install virtctl /usr/local/bin

以上步骤将帮助您在UCS本地集群上成功启用VM Runtime。如果您在安装过程中遇到任何问题,请参阅KubeVirt的官方文档或联系华为云技术支持。