Kubernetes : Install KubeVirt2025/01/27 |
|
Install KubeVirt to deploy fully virtualized virtual machines in Kubernetes Cluster. This example is based on the environment like follows.
+----------------------+ +----------------------+
| [ ctrl.srv.world ] | | [ dlp.srv.world ] |
| Manager Node | | Control Plane |
+-----------+----------+ +-----------+----------+
eth0|10.0.0.25 eth0|10.0.0.30
| |
------------+--------------------------+-----------
| |
eth0|10.0.0.51 eth0|10.0.0.52
+-----------+----------+ +-----------+----------+
| [ node01.srv.world ] | | [ node02.srv.world ] |
| Worker Node#1 | | Worker Node#2 |
+----------------------+ +----------------------+
|
| [1] | Install KubeVirt and virtctl command. |
|
[root@ctrl ~]#
export VERSION=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt) [root@ctrl ~]# wget https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/kubevirt-operator.yaml [root@ctrl ~]# wget https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/kubevirt-cr.yaml [root@ctrl ~]# wget https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-linux-amd64
[root@ctrl ~]#
[root@ctrl ~]# mv virtctl-${VERSION}-linux-amd64 /usr/local/bin/virtctl [root@ctrl ~]# chmod 755 /usr/local/bin/virtctl
kubectl apply -f 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
[root@ctrl ~]#
kubectl apply -f kubevirt-cr.yaml kubevirt.kubevirt.io/kubevirt created # after a few minutes, the pods will start up as follows [root@ctrl ~]# kubectl get pods -n kubevirt NAME READY STATUS RESTARTS AGE virt-api-5c65d4644b-9lpb2 1/1 Running 0 2m10s virt-api-5c65d4644b-txp5k 1/1 Running 0 2m10s virt-controller-7c8dfb87fc-9s8d9 1/1 Running 0 100s virt-controller-7c8dfb87fc-j8whw 1/1 Running 0 100s virt-handler-g69px 1/1 Running 0 100s virt-handler-w9wzk 1/1 Running 0 100s virt-operator-6dc9b58467-gkktw 1/1 Running 0 3m1s virt-operator-6dc9b58467-wr27p 1/1 Running 0 3m1s |
| [2] | Create a test VM and verify it works normally. |
|
[centos@ctrl ~]$
[centos@ctrl ~]$ wget https://raw.githubusercontent.com/kubevirt/kubevirt.github.io/master/labs/manifests/vm.yaml [centos@ctrl ~]$ kubectl apply -f vm.yaml virtualmachine.kubevirt.io/testvm created kubectl get vms NAME AGE STATUS READY testvm 5s Stopped False # start VM [centos@ctrl ~]$ virtctl start testvm VM testvm was scheduled to start kubectl get vms NAME AGE STATUS READY testvm 30s Running True[centos@ctrl ~]$ kubectl get vmi NAME AGE PHASE IP NODENAME READY testvm 34s Running 192.168.241.135 node02.srv.world True # connect to the console of VM [centos@ctrl ~]$ virtctl console testvm Successfully connected to testvm console. The escape sequence is ^] login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root. testvm login: cirros Password: $ # to go back to the Host's console, push Ctrl + ] key # * same operation as virsh command [centos@ctrl ~]$ # connect to VM via ssh # user is 'cirros' and password is 'gocubsgo' [centos@ctrl ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE virt-launcher-testvm-k485h 3/3 Running 0 34s
[centos@ctrl ~]$
[centos@ctrl ~]$ kubectl port-forward pod/virt-launcher-testvm-k485h 2220:22 &
ssh cirros@localhost -p 2220 Handling connection for 2220 The authenticity of host '[localhost]:2220 ([::1]:2220)' can't be established. ECDSA key fingerprint is SHA256:wxAtiA/ymbmuMX761uPH71xPuJPLz6AIBuQ2X7futaY. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[localhost]:2220' (ECDSA) to the list of known hosts. cirros@localhost's password: $ $ uname -a Linux testvm 4.4.0-28-generic #47-Ubuntu SMP Fri Jun 24 10:09:13 UTC 2016 x86_64 GNU/Linux $ cat /etc/os-release NAME=Buildroot VERSION=2015.05-g31af4e3-dirty ID=buildroot VERSION_ID=2015.05 PRETTY_NAME="Buildroot 2015.05" $ exit Connection to localhost closed. # stop VM [centos@ctrl ~]$ virtctl stop testvm VM testvm was scheduled to stop [centos@ctrl ~]$ kubectl get vms NAME AGE STATUS READY testvm 4m30s Stopped False # delete VM [centos@ctrl ~]$ kubectl delete vm testvm virtualmachine.kubevirt.io "testvm" deleted [centos@ctrl ~]$ kubectl get vms No resources found in default namespace. |
| Sponsored Link |
|
|