kubevirtのVMをリスタートしたらIPアドレスが消えた
症状
UbuntuのVMをkubectl virt restart
した後に ssh しようとしたところ、No route to host
となって繋がらなくなった。
$ k virt restart node-01
VM node-01 was scheduled to restart
$ ssh ubuntu@node-01.staging.vms.svc.fraction.cluster
ssh: connect to host node-01.staging.vms.svc.fraction.cluster port 22: No route to host
再起動後の Mac Address が変わっていた
kubectl virt console
で調べてみたところ、Mac Addressが再起動後に変わっていた。
➜ diff -u before.txt after.txt
--- before.txt 2022-09-29 00:12:28.024068282 +0000
+++ after.txt 2022-09-29 00:13:00.940507202 +0000
@@ -5,9 +5,5 @@
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
-2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
- link/ether b2:81:6c:00:81:56 brd ff:ff:ff:ff:ff:ff
- inet 10.244.8.23/24 metric 100 brd 10.244.8.255 scope global dynamic enp1s0
- valid_lft 86313396sec preferred_lft 86313396sec
- inet6 fe80::b081:6cff:fe00:8156/64 scope link
- valid_lft forever preferred_lft forever
+2: enp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
+ link/ether 62:1c:50:f6:fe:e3 brd ff:ff:ff:ff:ff:ff
netplan の設定ファイルを見るに、初回起動時の Mac Address を指定してネットワークの設定を行なっていた。
ubuntu@node-01:~$ cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
enp1s0:
dhcp4: true
match:
macaddress: f2:a5:6b:0c:3b:9f
set-name: enp1s0
version: 2
解決方法
networkData
を指定して、システムデフォルトの設定を上書きする。
- cloudInitNoCloud:
networkData: |
version: 2
ethernets:
enp1s0:
dhcp4: true
userData: |-
#cloud-config
password: password
name: cloudinitdisk
以上。
- https://github.com/kubevirt/kubevirt/issues/1646