背景
kubevirt的vm每次重启由于pod ip变化会导致vm无法通往
一种办法是cloudInitNoCloud中添加
bootcmd:
- cloud-init clean -c network
另一种就是固定vm pod的ip
安装
前置步骤参考
https://www.jianshu.com/p/34f5815a268f
kube-ovn
helm install kube-ovn kubeovn/kube-ovn -n kube-system --version v1.14
修改ovn-cni添加
privileged: true
修改ovn-controller,添加args
--keep-vm-ip=true
demo
data volume
apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
name: ubuntu
annotations:
cdi.kubevirt.io/storage.bind.immediate.requested: "true"
spec:
source:
http:
url: "https://cloud-images.ubuntu.com/jammy/20251017/jammy-server-cloudimg-amd64.img"
pvc:
storageClassName: local-path
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
virtual machine
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: testvm
spec:
runStrategy: Halted
template:
spec:
domain:
devices:
gpus:
- name: gpu0
deviceName: nvidia.com/AD102_GEFORCE_RTX_4090_D
disks:
- name: rootdisk
disk:
bus: virtio
- disk:
bus: virtio
name: cloudinitdisk
interfaces:
- name: default
bridge: {}
resources:
requests:
memory: 8000M
limits:
nvidia.com/AD102_GEFORCE_RTX_4090_D: "1"
networks:
- name: default
pod: {}
volumes:
- name: rootdisk
dataVolume:
name: ubuntu
- name: cloudinitdisk
cloudInitNoCloud:
userData: |
#cloud-config
password: demo
chpasswd:
expire: false
ssh_pwauth: true
开机
查看ip
virtctl start testvm
kubectl get vmi
得到如下
NAME AGE PHASE IP NODENAME READY
testvm 13m Running 10.16.0.20 host True
关机
virtctl stop testvm
开机
查看ip
virtctl start testvm
virtctl console testvm
补充
显示设置固定ip
修改virtual machine设置固定ip
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: testvm
spec:
...
template:
metadata:
labels:
ovn.kubernetes.io/ip_address: "10.16.0.20"