前往 https://github.com/kubevirt/kubevirt/releases 可以看到当前已经 release 的版本,在 Assets 下可以看到提供的用于部署的 YAML 文件和 virtctl 管理工具。
部署 KubeVirt
获取当前 KubeVirt 的最新版本:
1 2 3 export KUBEVIRT_VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases/latest | jq -r .tag_name)echo $KUBEVIRT_VERSION v1.2.0
当前使用的版本是 v1.2.0
开始部署 KubeVirt Operator:
1 2 3 4 5 6 7 8 9 10 11 12 vagrant@master01:~$ kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_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
接下来部署 KubeVirt 通过创建 CRD,用于触发 operator 进行部署:
1 2 3 vagrant@master01:~$ kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION} /kubevirt-cr.yaml kubevirt.kubevirt.io/kubevirt created
因为当前使用的 K8S 集群是在 VM 中的,如果硬件虚拟化不可用,可以配置 KubeVirt 使用软件虚拟化,这会降低性能,在能使用硬件虚拟化的时候不建议使用,默认 developerConfiguration 配置为空。
1 2 3 vagrant@master01:~$ kubectl -n kubevirt patch kubevirt kubevirt --type =merge --patch '{"spec":{"configuration":{"developerConfiguration":{"useEmulation":true}}}}' kubevirt.kubevirt.io/kubevirt patched
等待 KubeVirt 部署完成 查看 kubevirt 的状态:
1 2 3 vagrant@master01:~$ kubectl get kubevirt -n kubevirt NAME AGE PHASE kubevirt 7m52s Deployed
状态已经是 Deployed 说明已经部署完成了。
查看 kubevirt 命名空间中的 Pod:
1 2 3 4 5 6 7 8 9 10 11 vagrant@master01:~$ kubectl get pod -o wide -n kubevirt NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES virt-api-54666f869-j84m2 1/1 Running 0 8m27s 10.244.241.86 master01 <none> <none> virt-api-54666f869-msk6c 1/1 Running 0 8m27s 10.244.30.85 worker02 <none> <none> virt-controller-c67776ccb-kk7fv 1/1 Running 0 7m51s 10.244.5.20 worker01 <none> <none> virt-controller-c67776ccb-phl9q 1/1 Running 0 7m52s 10.244.241.87 master01 <none> <none> virt-handler-6cx8p 1/1 Running 0 7m51s 10.244.5.21 worker01 <none> <none> virt-handler-8xs4s 1/1 Running 0 7m51s 10.244.241.88 master01 <none> <none> virt-handler-tk6b8 1/1 Running 0 7m51s 10.244.30.86 worker02 <none> <none> virt-operator-6776f5689d-6rjww 1/1 Running 0 15m 10.244.5.19 worker01 <none> <none> virt-operator-6776f5689d-zvl74 1/1 Running 0 15m 10.244.241.84 master01 <none> <none>
当前还没有创建 VM,所以看不到 virt-launcher 相关的 Pod,在 kubevirt 命名空间中,可以看到 kubevirt 的核心组件,包括 virt-controller 和 virt-api 。
安装 virtctl virtctl 可用于管理虚拟机,启动,停止。可以借助它进行 vnc、console 和 ssh 连接到 VM 。
直接下载可执行文件,赋予执行权限即可:
1 2 3 4 5 6 7 8 vagrant@master01:~$ wget -O virtctl https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION} /virtctl-${KUBEVIRT_VERSION} -linux-amd64 vagrant@master01:~$ chmod +x virtctl vagrant@master01:~$ sudo mv virtctl /usr/local/bin/ vagrant@master01:~$ virtctl version Client Version: version.Info{GitVersion:"v1.2.0" , GitCommit:"f26e45d99ac35743fc33d6a121b629e9a9af6b63" , GitTreeState:"clean" , BuildDate:"2024-03-05T20:34:24Z" , GoVersion:"go1.21.5 X:nocoverageredesign" , Compiler:"gc" , Platform:"linux/amd64" } Server Version: version.Info{GitVersion:"v1.2.0" , GitCommit:"f26e45d99ac35743fc33d6a121b629e9a9af6b63" , GitTreeState:"clean" , BuildDate:"2024-03-05T21:32:21Z" , GoVersion:"go1.21.5 X:nocoverageredesign" , Compiler:"gc" , Platform:"linux/amd64" }
评论· · · · · ·