前提条件
已安装:kubernetes集群、kubectl、docker
apt install -y qemu-kvm libvirt virt-install bridge-utils
【所有节点全部安装】
virt-host-validate qemu
部署kubevirt
下载kubevirt-cr.yaml和kubevirt-operator.yaml
先执行:
Kubectl apply -f kubevirt-operator.yaml
在执行
Kubectl apply -f kubevirt-cr.yaml
查看是否部署成功
Kubectl get pods -A
安装virtctl,virtctl是kubevirt一个命令行工具
Github上搜索,进行下载【下载最新版本】:
cp -p virtctl-v0.58.0-linux-amd64 /usr/bin/virtctl
chmod +x /usr/bin/virtctl/
virtctl --help
删除Kubectl
kubectl delete -n kubevirt kubevirt kubevirt --wait=true # --wait=true should anyway be default
kubectl delete apiservices v1.subresources.kubevirt.io # this needs to be deleted to avoid stuck terminating namespaces
kubectl delete mutatingwebhookconfigurations virt-api-mutator # not blocking but would be left over
kubectl delete validatingwebhookconfigurations virt-operator-validator # not blocking but would be left over
kubectl delete validatingwebhookconfigurations virt-api-validator # not blocking but would be left over
kubectl delete -f kubevirt-operator.yaml --wait=false
注意:如果您错误地首先删除了运算符,KV自定义资源将卡在Terminating状态,要修复它,请从资源中手动删除终结器。
运行kubevirt-operator.yaml会出现告警:Warning: Detected changes to resource kubevirts.kubevirt.io which is currently being deleted.
运行kubevirt-operator.yaml出现,链接不到kubevirt-operator-webhook。
注意:由于一个错误,需要手动删除apiservice和webhook配置。
kubectl -n kubevirt patch kv kubevirt --type=json -p '[{ "op": "remove", "path": "/metadata/finalizers" }]'
测试
curl https://kubevirt.io/labs/manifests/vm.yaml
kubectl apply -f https://kubevirt.io/labs/manifests/vm.yaml
kubectl get vm
启动虚拟机:
virtctl start testvm
kubectl get vmi
进入虚拟机
对外发布端口
virtctl expose virtualmachine testvm --name vmiservice --target-port 22 --port 8022 --type NodePort
ssh -p30822 cirros@本地主机IP