地址:https://github.com/kubevirt/kubevirt
1.安装kubevirt
# 导出 KubeVirt 版本(例如 v1.6.2)
export KUBEVIRT_VERSION="v1.6.2"
# 部署 KubeVirt Operator 和 CRD
kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml
#多等会,确认ok以后再执行下面的命令
# kubectl get ns
NAME STATUS AGE
......
kubevirt Active 10s
# kubectl get pods -n kubevirt
NAME READY STATUS RESTARTS AGE
...
virt-operator-6d56bb6986-jl66g 1/1 Running 1 (39m ago) 8s
virt-operator-6d56bb6986-vnnkn 1/1 Running 1 (39m ago) 8s
# 部署 KubeVirt 核心组件
kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml
# kubectl get pods -n kubevirt
NAME READY STATUS RESTARTS AGE
virt-api-5888cc84c7-2zstl 1/1 Running 1 (39m ago) 62m
virt-api-5888cc84c7-tscw9 1/1 Running 1 (39m ago) 62m
virt-controller-546465698c-dh644 1/1 Running 1 (39m ago) 61m
virt-controller-546465698c-ptrqm 1/1 Running 1 (39m ago) 61m
virt-handler-jmqwg 1/1 Running 1 (39m ago) 61m
virt-handler-q22tx 1/1 Running 1 (39m ago) 61m
virt-operator-6d56bb6986-jl66g 1/1 Running 1 (39m ago) 64m
virt-operator-6d56bb6986-vnnkn 1/1 Running 1 (39m ago) 64m
第二种方案:
1. 添加KubeVirt Helm仓库
helm repo add kubevirt https://kubevirt.io/helm-charts
helm repo update
2. 安装KubeVirt Operator
kubectl create namespace kubevirt
helm install kubevirt kubevirt/kubevirt -n kubevirt --version v0.58.0
3. 验证安装
# 检查KubeVirt自定义资源定义
kubectl get crd | grep kubevirt.io
# 检查Pod状态
kubectl get pods -n kubevirt
# 检查KubeVirt自定义资源
kubectl get kubevirt -n kubevirt
2.安装kubevirt客户端
wget https://github.com/kubevirt/kubevirt/releases/download/v1.6.2/virtctl-v1.6.2-linux-amd64
chmod +x virtctl-v1.6.2-linux-amd64
mv virtctl-v1.6.2-linux-amd64 /usr/local/bin/virtctl
virtctl version
3.安装虚拟机
##cat vm.yaml
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: testvm
spec:
runStrategy: Halted
template:
metadata:
labels:
kubevirt.io/size: small
kubevirt.io/domain: testvm
spec:
domain:
devices:
disks:
- name: containerdisk
disk:
bus: virtio
- name: cloudinitdisk
disk:
bus: virtio
interfaces:
- name: default
masquerade: {}
resources:
requests:
memory: 64M
networks:
- name: default
pod: {}
volumes:
- name: containerdisk
containerDisk:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/quay.io/kubevirt/cirros-container-disk-demo:latest
- name: cloudinitdisk
cloudInitNoCloud:
userDataBase64: SGkuXG4=
###部署
kubectl apply -f vm.yaml
####查看虚拟机
kubectl get vm
NAME AGE STATUS READY
testvm 61m Stopped False
####启动虚拟机
virtctl start testvm
4.使用虚拟机
kubectl get vm
NAME AGE STATUS READY
testvm 2d22h Running True
kubectl get vmi
NAME AGE PHASE IP NODENAME READY
testvm 2d20h Running 10.233.81.148 k8s-node1 True
####访问虚拟机控制台
virtctl console testvm
Successfully connected to vm-cirros console. The escape sequence is ^] 显示这个信息时,需要按回车键,才能出现登录提示。
login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
vm-cirros login: cirros 用户名
Password: gocubsgo 密码
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast qlen 1000
link/ether d6:b9:cf:6a:9b:0c brd ff:ff:ff:ff:ff:ff
inet 10.233.74.81/32 brd 10.255.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::d4b9:cfff:fe6a:9b0c/64 scope link
valid_lft forever preferred_lft forever
#######为虚拟机创建service并访问
virtctl expose virtualmachine testvm --name vmiservice-node --target-port 22 --port 24 --type NodePort
# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.233.0.1 <none> 443/TCP 15h
vmiservice-node NodePort 10.233.48.20 <none> 24:30747/TCP 43m
###另外一台机器上
ssh -p30747 cirros@192.168.10.1
673

被折叠的 条评论
为什么被折叠?



