云计算-容器云-KubeVirt 运维
KubeVirt 运维:创建 VM
使用提供的镜像在 kubevirt 命名空间下创建一台 VM,名称为 exam,指定 VM 的内存、CPU、网卡和磁盘等配置。
[root@k8s-master-node1 ~]# kubectl explain kubevirt.spec. --recursive |grep useuseEmulation <boolean>
[root@k8s-master-node1 ~]# kubectl -n kubevirt edit kubevirt
spec:certificateRotateStrategy: {}configuration:developerConfiguration: #{}useEmulation: true
[root@k8s-master-node1 ~]# vim vm.yaml
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:name: exam
spec:running: truetemplate:spec:domain:devices:disks:- name: vmdisk: {}resources:requests:memory: 1Givolumes:- name: vmcontainerDisk:image: fedora-virt:v1.0imagePullPolicy: IfNotPresent
[root@k8s-master-node1 ~]# kubectl apply -f vm.yaml
virtualmachine.kubevirt.io/exam created
[root@k8s-master-node1 ~]# kubectl get virtualmachine
NAME AGE STATUS READY
exam 31s Running True
[root@k8s-master-node1 ~]# kubectl delete -f vm.yaml
virtualmachine.kubevirt.io "exam" deleted
KubeVirt 运维:VMI 管理
将提供的镜像在default命名空间下创建一台VMI,名称为exam,使用Service 对外暴露 VMI。
[root@k8s-master-node1 ~]# vim Dockerfile
FROM scratch
ADD exam.qcow2 /disk/
[root@k8s-master-node1 ~]# docker build -t exam:v1.0 -f Dockerfile .
[root@k8s-master-node1 ~]# vim exam.yaml
apiVersion: kubevirt.io/v1
kind: VirtualMachineInstance
metadata:name: examlabels:app: exam
spec:domain:devices:disks:- name: containerdiskdisk:bus: virtio- name: cloudinitnodiskdisk:bus: virtioresources:requests:memory: 512Mivolumes:- name: containerdiskcontainerDisk:image: exam:v1.0imagePullPolicy: IfNotPresent- name: cloudinitnodiskcloudInitNoCloud:userData: |-hostname: exam
---
apiVersion: v1
kind: Service
metadata:creationTimestamp: nullname: examlabels:app: exam
spec:ports:- name: 80-80port: 80nodePort: 30082 # 节点端口protocol: TCPtargetPort: 80 # 目标端口selector:app: examtype: NodePort
[root@k8s-master-node1 ~]# kubectl apply -f exam.yaml
virtualmachineinstance.kubevirt.io/exam created
service/exam created
[root@k8s-master-node1 ~]# kubectl get vmi
NAME AGE PHASE IP NODENAME READY
exam 60s Running 10.244.0.50 k8s-master-node1 True