vagrant@master01:~$ kubectl get vm -n testvm NAME AGE STATUS READY testvm 34s Stopped False
testvm 处于 Stopped 的状态,是因为在资源定义中,设置了 running: false,所以需要手动启动。 同时可以看到在 VM 没有启动的时候是不存在 virt-launcher Pod 和 VMI 资源的。
1 2 3 4
vagrant@master01:~$ kubectl get vmi -n testvm No resources found in testvm namespace. vagrant@master01:~$ kubectl get pod -n testvm No resources found in testvm namespace.
使用 virtctl 进行启动 VM:
1 2
vagrant@master01:~$ virtctl -n testvm start testvm VM testvm was scheduled to start
启动后,查看资源状态:
1 2 3 4 5 6 7 8 9
vagrant@master01:~$ kubectl -n testvm get vm,vmi,pod NAME AGE STATUS READY virtualmachine.kubevirt.io/testvm 3m44s Running True
NAME AGE PHASE IP NODENAME READY virtualmachineinstance.kubevirt.io/testvm 30s Running 10.244.241.89 master01 True
NAME READY STATUS RESTARTS AGE pod/virt-launcher-testvm-nlwd4 3/3 Running 0 30s
访问虚拟机
借助 virtctl 可以通过 console vnc 或 ssh 访问虚拟机。
serial console
通过 virtctl console 连接到虚拟机:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
vagrant@master01:~$ virtctl -n testvm 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: $ uname -a Linux testvm 4.4.0-28-generic #47-Ubuntu SMP Fri Jun 24 10:09:13 UTC 2016 x86_64 GNU/Linux $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 44M 0 disk |-vda1 253:1 0 35M 0 part / `-vda15 253:15 0 8M 0 part vdb 253:16 0 1M 0 disk
通过 ctrl + ] 退出。
ssh
借助 virtctl ssh 可以通过 SSH 连接到虚拟机:
1 2 3 4 5 6 7 8 9 10 11
vagrant@master01:~$ virtctl ssh cirros@testvm.testvm The authenticity of host 'vmi/testvm.testvm:22 (192.168.121.1:7890)' can't be established. ECDSA key fingerprint is SHA256:DlsqNiPTxNrBsy+VldgVLJT7qKbyynH+Dxqj2s4Q7oU. Are you sure you want to continue connecting (yes/no)? yes cirros@vmi/testvm.testvm's password: $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 44M 0 disk |-vda1 253:1 0 35M 0 part / `-vda15 253:15 0 8M 0 part vdb 253:16 0 1M 0 disk
vagrant@master01:~$ virtctl stop testvm -n testvm VM testvm was scheduled to stop vagrant@master01:~$ kubectl get vm,vmi -n testvm NAME AGE STATUS READY virtualmachine.kubevirt.io/testvm 11m Stopped False
要删除虚拟机,需要删除 VM 资源,如果不删除 VM 资源,仅删除 VMI 资源,会导致 VMI 重新构建。
只删除 VMI
为了更好的演示删除 VMI 会自动创建 VMI,首选需要将 VM 中的 running: false 修改为 true:
vagrant@master01:~$ kubectl -n testvm get vmi NAME AGE PHASE IP NODENAME READY testvm 31s Running 10.244.241.90 master01 True vagrant@master01:~$ kubectl -n testvm delete vmi testvm virtualmachineinstance.kubevirt.io "testvm" deleted vagrant@master01:~$ kubectl -n testvm get vmi NAME AGE PHASE IP NODENAME READY testvm 18s Running 10.244.241.91 master01 True
可以看到删除 VMI 后,又重新构建了 VMI,IP 是不一样的。
删除 VM
正确的流程应该是先手动停止 VMI,然后将 VM 删除:
1 2 3 4 5 6 7 8
vagrant@master01:~$ virtctl -n testvm stop testvm VM testvm was scheduled to stop vagrant@master01:~$ kubectl get vmi -n testvm No resources found in testvm namespace. vagrant@master01:~$ kubectl delete vm testvm -n testvm virtualmachine.kubevirt.io "testvm" deleted vagrant@master01:~$ kubectl get vm,vmi -n testvm No resources found in testvm namespace.
评论· · · · · ·