@@ -100,3 +100,40 @@ time="2024-03-14T11:48:58Z" level=info msg="No interface is specified for VIP in
100100....
101101time="2024-03-14T11:52:30Z" level=fatal msg="unable to detect default interface -> [Unable to find default route]"
102102```
103+
104+ ## Nodes fail to deploy/have wrong node-ip with mixed interface models
105+ Kubelet chooses the first interface to acquire a node-ip for kubeadm. The first
106+ interface is defined by the in-kernel order, which is defined by the order the
107+ pci bus is scanned and drivers are loaded.
108+
109+ As an example:
110+ ```
111+ kubectl get nodes -o wide
112+ NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
113+ test-cluster-control-plane-gcgc6 Ready control-plane 11h v1.26.7 10.0.1.69 <none> Ubuntu 22.04.3 LTS 5.15.0-89-generic containerd://1.7.6
114+ test-cluster-load-balancer-c8rd2 Ready load-balancer,node 11h v1.26.7 10.0.2.155 <none> Ubuntu 22.04.3 LTS 5.15.0-89-generic containerd://1.7.6
115+ test-cluster-load-balancer-wqbcg Ready load-balancer,node 11h v1.26.7 10.0.2.152 <none> Ubuntu 22.04.3 LTS 5.15.0-89-generic containerd://1.7.6
116+ test-cluster-worker-hbm8s Ready node 11h v1.26.7 10.0.1.71 <none> Ubuntu 22.04.3 LTS 5.15.0-89-generic containerd://1.7.6
117+ test-cluster-worker-n2vbc NotReady node 17m v1.26.7 10.0.1.73 <none> Ubuntu 22.04.3 LTS 5.15.0-89-generic containerd://1.7.6
118+ ```
119+
120+ The load-balancers have an ` e1000 ` interface as their default network, whereas ` ens19 ` and ` ens20 ` are ` virtio `
121+ ```
122+ root@test-cluster-load-balancer-zrjx8:~# ip -o l sh
123+ 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000\ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
124+ 2: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc prio state UP mode DEFAULT group default qlen 1000\ link/ether 0a:97:89:e5:7f:1d brd ff:ff:ff:ff:ff:ff\ altname enp0s19
125+ 3: ens20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc prio master vrf-ext state UP mode DEFAULT group default qlen 1000\ link/ether 9a:58:08:40:a2:70 brd ff:ff:ff:ff:ff:ff\ altname enp0s20
126+ 4: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc prio state UP mode DEFAULT group default qlen 1000\ link/ether 16:7a:ee:74:23:0d brd ff:ff:ff:ff:ff:ff\ altname enp0s18
127+ ```
128+
129+ This is the order the interfaces are created in:
130+ ```
131+ root@test-cluster-load-balancer-zrjx8:~# dmesg -t | grep eth
132+ virtio_net virtio2 ens19: renamed from eth0
133+ virtio_net virtio3 ens20: renamed from eth1
134+ e1000 0000:00:12.0 eth0: (PCI:33MHz:32-bit) 16:7a:ee:74:23:0d
135+ e1000 0000:00:12.0 eth0: Intel(R) PRO/1000 Network Connection
136+ e1000 0000:00:12.0 ens18: renamed from eth0
137+ ```
138+
139+ If you absolutely must mix interface types, make sure that the default network interface is the one that comes up first.
0 commit comments