4.4. 配置 virt-who 以连接到 OpenShift Virtualization

支持的平台

virt-who 支持的 OpenShift Virtualization 状态:

  • virt-who-0.28.x-1.el7 (RHEL 7.9)
  • virt-who-0.29.x-1.el8 (RHEL 8.3)

流程

  1. 在您要订阅的集群中,创建一个项目和名为 virt-who 的服务帐户:

    $ oc new-project virt-who
    $ oc create serviceaccount virt-who
  2. 创建集群角色来列出节点和虚拟机实例。

    $ oc create clusterrole lsnodes --verb=list --resource=nodes
    $ oc create clusterrole lsvmis --verb=list --resource=vmis
  3. 创建集群角色绑定。

    $ oc adm policy add-cluster-role-to-user lsnodes system:serviceaccount:virt-who:virt-who
    $ oc adm policy add-cluster-role-to-user lsvmis system:serviceaccount:virt-who:virt-who
  4. 验证 virt-who 系统帐户是否有列出所有正在运行的虚拟机的权限:

    $ oc get vmis -A --as=system:serviceaccount:virt-who:virt-who
  5. 在主机上安装 virt-who,可以是在 OpenShift Virtualization 本身中运行的虚拟机:

    [virtwho-host]$ yum install virt-who
  6. 在订阅的主机上查找您的所有者号:

    $ subscription-manager orgs
  7. 将模板配置文件复制到新的单独的配置文件中。要在故障排除时轻松识别配置文件,请使用集群 API 的主机名。在本例中,主机名为 openshift-cluster-1

    [virtwho-host]# cp /etc/virt-who.d/template.conf /etc/virt-who.d/openshift-cluster-1.conf
    [cnv]
    type=kubevirt
    kubeconfig=/root/.kube/config
    hypervisor_id=hostname
    owner=<owner_number>
  8. 获取 virt-who 服务帐户的令牌:

    # oc serviceaccounts get-token virt-who
  9. 如果 /usr/bin/oc 不可用,请安装 /usr/bin/oc,并使用令牌登录并创建有效的 kubeconfig 文件。您必须通过包含 url 来指定集群 api。例如:

    [virtwho-host]# oc login https://api.testcluster-1.example.org:6443 --token=<token>
    1. 要在 kubeconfig 文件中使用 OpenShift Virtualization 证书(CA)证书,将其从集群中提取,并将它保存到运行 virt-who 作为控制器守护进程的系统中的文件:

      oc get secret -n openshift-kube-apiserver-operator loadbalancer-serving-signer -o jsonpath='{.data.tls\.crt}' | base64 -d > $cluster-ca.pem
    2. 更改 kubeconfig 文件,使其包含提取的 CA 证书。例如:

      [virtwho-host]$ cat /root/.kube/config
      apiVersion: v1
      clusters:
      - cluster:
          server: https://api.testcluster.example.org:6443
          certificate-authority: /root/testcluster-ca.pem
        name: api-testcluster-example-org:6443
      contexts:
      - context:
          cluster: api-test-cluster-example-org:6443
          namespace: default
  10. 在启动该服务前,您可以手动测试配置:

    [virtwho-host]# virt-who --print
注意

如果安装了 jq 程序,您可以使用它更轻松地阅读输出:VirtualMachine virt-who --print | jq

  1. 启用 virt-who 服务:

    [virtwho-host]# systemctl enable virt-who
  2. 重启 virt-who 服务以使用新配置。

    [virtwho-host]# systemctl restart virt-who

virt-who 日志位于 /var/log/rhsm/rhsm.log 中。在这个文件中,您可以查看配置或连接错误。