k0sproject / k0s

k0s - The Zero Friction Kubernetes
https://docs.k0sproject.io
Other
3.11k stars 353 forks source link

CPLB continue to add CPLB IP as etcd.peerAddress #4664

Open Skaronator opened 1 week ago

Skaronator commented 1 week ago

Before creating an issue, make sure you've checked the following:

Platform

Linux 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 GNU/Linux
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Version

v1.30.2+k0s.0

Sysinfo

`k0s sysinfo`
root@node1:~# k0s sysinfo
Total memory: 125.6 GiB (pass)
Disk space available for /var/lib/k0s: 387.4 GiB (pass)
Name resolution: localhost: [::1 127.0.0.1] (pass)
Operating system: Linux (pass)
  Linux kernel release: 6.7.12+bpo-amd64 (pass)
  Max. file descriptors per process: current: 1048576 / max: 1048576 (pass)
  AppArmor: active (pass)
  Executable in PATH: modprobe: /usr/sbin/modprobe (pass)
  Executable in PATH: mount: /usr/bin/mount (pass)
  Executable in PATH: umount: /usr/bin/umount (pass)
  /proc file system: mounted (0x9fa0) (pass)
  Control Groups: version 2 (pass)
    cgroup controller "cpu": available (is a listed root controller) (pass)
    cgroup controller "cpuacct": available (via cpu in version 2) (pass)
    cgroup controller "cpuset": available (is a listed root controller) (pass)
    cgroup controller "memory": available (is a listed root controller) (pass)
    cgroup controller "devices": available (device filters attachable) (pass)
    cgroup controller "freezer": available (cgroup.freeze exists) (pass)
    cgroup controller "pids": available (is a listed root controller) (pass)
    cgroup controller "hugetlb": available (is a listed root controller) (pass)
    cgroup controller "blkio": available (via io in version 2) (pass)
  CONFIG_CGROUPS: Control Group support: built-in (pass)
    CONFIG_CGROUP_FREEZER: Freezer cgroup subsystem: built-in (pass)
    CONFIG_CGROUP_PIDS: PIDs cgroup subsystem: built-in (pass)
    CONFIG_CGROUP_DEVICE: Device controller for cgroups: built-in (pass)
    CONFIG_CPUSETS: Cpuset support: built-in (pass)
    CONFIG_CGROUP_CPUACCT: Simple CPU accounting cgroup subsystem: built-in (pass)
    CONFIG_MEMCG: Memory Resource Controller for Control Groups: built-in (pass)
    CONFIG_CGROUP_HUGETLB: HugeTLB Resource Controller for Control Groups: built-in (pass)
    CONFIG_CGROUP_SCHED: Group CPU scheduler: built-in (pass)
      CONFIG_FAIR_GROUP_SCHED: Group scheduling for SCHED_OTHER: built-in (pass)
        CONFIG_CFS_BANDWIDTH: CPU bandwidth provisioning for FAIR_GROUP_SCHED: built-in (pass)
    CONFIG_BLK_CGROUP: Block IO controller: built-in (pass)
  CONFIG_NAMESPACES: Namespaces support: built-in (pass)
    CONFIG_UTS_NS: UTS namespace: built-in (pass)
    CONFIG_IPC_NS: IPC namespace: built-in (pass)
    CONFIG_PID_NS: PID namespace: built-in (pass)
    CONFIG_NET_NS: Network namespace: built-in (pass)
  CONFIG_NET: Networking support: built-in (pass)
    CONFIG_INET: TCP/IP networking: built-in (pass)
      CONFIG_IPV6: The IPv6 protocol: built-in (pass)
    CONFIG_NETFILTER: Network packet filtering framework (Netfilter): built-in (pass)
      CONFIG_NETFILTER_ADVANCED: Advanced netfilter configuration: built-in (pass)
      CONFIG_NF_CONNTRACK: Netfilter connection tracking support: module (pass)
      CONFIG_NETFILTER_XTABLES: Netfilter Xtables support: module (pass)
        CONFIG_NETFILTER_XT_TARGET_REDIRECT: REDIRECT target support: module (pass)
        CONFIG_NETFILTER_XT_MATCH_COMMENT: "comment" match support: module (pass)
        CONFIG_NETFILTER_XT_MARK: nfmark target and match support: module (pass)
        CONFIG_NETFILTER_XT_SET: set target and match support: module (pass)
        CONFIG_NETFILTER_XT_TARGET_MASQUERADE: MASQUERADE target support: module (pass)
        CONFIG_NETFILTER_XT_NAT: "SNAT and DNAT" targets support: module (pass)
        CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: "addrtype" address type match support: module (pass)
        CONFIG_NETFILTER_XT_MATCH_CONNTRACK: "conntrack" connection tracking match support: module (pass)
        CONFIG_NETFILTER_XT_MATCH_MULTIPORT: "multiport" Multiple port match support: module (pass)
        CONFIG_NETFILTER_XT_MATCH_RECENT: "recent" match support: module (pass)
        CONFIG_NETFILTER_XT_MATCH_STATISTIC: "statistic" match support: module (pass)
      CONFIG_NETFILTER_NETLINK: module (pass)
      CONFIG_NF_NAT: module (pass)
      CONFIG_IP_SET: IP set support: module (pass)
        CONFIG_IP_SET_HASH_IP: hash:ip set support: module (pass)
        CONFIG_IP_SET_HASH_NET: hash:net set support: module (pass)
      CONFIG_IP_VS: IP virtual server support: module (pass)
        CONFIG_IP_VS_NFCT: Netfilter connection tracking: built-in (pass)
        CONFIG_IP_VS_SH: Source hashing scheduling: module (pass)
        CONFIG_IP_VS_RR: Round-robin scheduling: module (pass)
        CONFIG_IP_VS_WRR: Weighted round-robin scheduling: module (pass)
      CONFIG_NF_CONNTRACK_IPV4: IPv4 connetion tracking support (required for NAT): unknown (warning)
      CONFIG_NF_REJECT_IPV4: IPv4 packet rejection: module (pass)
      CONFIG_NF_NAT_IPV4: IPv4 NAT: unknown (warning)
      CONFIG_IP_NF_IPTABLES: IP tables support: module (pass)
        CONFIG_IP_NF_FILTER: Packet filtering: module (pass)
          CONFIG_IP_NF_TARGET_REJECT: REJECT target support: module (pass)
        CONFIG_IP_NF_NAT: iptables NAT support: module (pass)
        CONFIG_IP_NF_MANGLE: Packet mangling: module (pass)
      CONFIG_NF_DEFRAG_IPV4: module (pass)
      CONFIG_NF_CONNTRACK_IPV6: IPv6 connetion tracking support (required for NAT): unknown (warning)
      CONFIG_NF_NAT_IPV6: IPv6 NAT: unknown (warning)
      CONFIG_IP6_NF_IPTABLES: IP6 tables support: module (pass)
        CONFIG_IP6_NF_FILTER: Packet filtering: module (pass)
        CONFIG_IP6_NF_MANGLE: Packet mangling: module (pass)
        CONFIG_IP6_NF_NAT: ip6tables NAT support: module (pass)
      CONFIG_NF_DEFRAG_IPV6: module (pass)
    CONFIG_BRIDGE: 802.1d Ethernet Bridging: module (pass)
      CONFIG_LLC: module (pass)
      CONFIG_STP: module (pass)
  CONFIG_EXT4_FS: The Extended 4 (ext4) filesystem: module (pass)
  CONFIG_PROC_FS: /proc file system support: built-in (pass)
root@node1:~#

What happened?

I thought the fix in #4582 would solve this issue, but k0s still puts the CPLB IP as etcd.peerAddress IP.

Steps to reproduce

  1. Enable CPLB with a defined privateInterface on the host
  2. Remove privateInterface from the config
  3. Run k0sctl apply
  4. Check config on the node. The etcd.peerAddress should contain the CPLB IP (which is wrong)

Expected behavior

This is my k0sctl.yaml currently deployed:

apiVersion: k0sctl.k0sproject.io/v1beta1
kind: Cluster
metadata:
  name: tardis
spec:
  k0s:
    version: v1.30.2+k0s.0
    config:
      spec:
        api:
          sans:
            - 192.168.0.30
        network:
          podCIDR: 10.244.0.0/16
          serviceCIDR: 10.96.0.0/12
          controlPlaneLoadBalancing:
            enabled: true
            type: Keepalived
            keepalived:
              vrrpInstances:
                - virtualIPs: ["192.168.0.30/23"]
                  authPass: homelab
        telemetry:
          enabled: false
  hosts:
  - ssh:
      address: 192.168.0.5
      user: root
      keyPath: ~/.ssh/id_rsa
    role: controller+worker
    noTaints: true
    privateInterface: enp3s0f1np1

Resulting in this k0s.yaml on the node:

apiVersion: k0s.k0sproject.io/v1beta1
kind: ClusterConfig
spec:
  api:
    address: 192.168.0.5
    sans:
    - 192.168.0.5
    - 192.168.0.30
    - 127.0.0.1
  network:
    controlPlaneLoadBalancing:
      enabled: true
      keepalived:
        vrrpInstances:
        - authPass: homelab
          virtualIPs:
          - 192.168.0.30/23
      type: Keepalived
    podCIDR: 10.244.0.0/16
    serviceCIDR: 10.96.0.0/12
  telemetry:
    enabled: false

After the fix in #4582, I thought I can remove the privateInterface from my config. And I would still get the same k0s.yaml on my node and everything continue to work.

Actual behavior

Removing privateInterface still adds etcd.peerAddress which points to the CPLB IP which is WRONG.

apiVersion: k0s.k0sproject.io/v1beta1
kind: ClusterConfig
spec:
  api:
    address: 192.168.0.30
    sans:
    - 192.168.0.30
    - 192.168.0.5
    - 127.0.0.1
  network:
    controlPlaneLoadBalancing:
      enabled: true
      keepalived:
        vrrpInstances:
        - authPass: homelab
          virtualIPs:
          - 192.168.0.30/23
      type: Keepalived
    podCIDR: 10.244.0.0/16
    serviceCIDR: 10.96.0.0/12
  storage:
    etcd:
      peerAddress: 192.168.0.30
  telemetry:
    enabled: false

Screenshots and logs

No response

Additional context

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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 noprefixroute
       valid_lft forever preferred_lft forever
2: enp3s0f0np0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 3c:fd:fe:a5:b7:f4 brd ff:ff:ff:ff:ff:ff
3: enp3s0f1np1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 3c:fd:fe:a5:b7:f5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.5/23 brd 192.168.1.255 scope global dynamic enp3s0f1np1
       valid_lft 600795sec preferred_lft 600795sec
    inet 192.168.0.30/23 scope global secondary enp3s0f1np1
       valid_lft forever preferred_lft forever
    inet6 fe80::3efd:feff:fea5:b7f5/64 scope link
       valid_lft forever preferred_lft forever
5: kube-bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 76:89:d0:e8:f3:ef brd ff:ff:ff:ff:ff:ff
    inet 10.244.0.1/24 brd 10.244.0.255 scope global kube-bridge
       valid_lft forever preferred_lft forever
    inet6 fe80::7489:d0ff:fee8:f3ef/64 scope link
       valid_lft forever preferred_lft forever
73: veth1d84c647@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 6e:dd:70:51:98:eb brd ff:ff:ff:ff:ff:ff link-netns cni-13df4e66-ef26-9b78-c2d4-a61faa98f472
    inet6 fe80::6cdd:70ff:fe51:98eb/64 scope link
       valid_lft forever preferred_lft forever
74: veth4021ea2d@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether e2:33:d5:9f:f9:50 brd ff:ff:ff:ff:ff:ff link-netns cni-4c999646-d8ba-e741-6377-6321f67b64c3
    inet6 fe80::e033:d5ff:fe9f:f950/64 scope link
       valid_lft forever preferred_lft forever
75: vethe2706f0a@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether ee:3d:4e:06:0e:16 brd ff:ff:ff:ff:ff:ff link-netns cni-f9650f48-178a-dc19-5989-621ae41d36f4
    inet6 fe80::ec3d:4eff:fe06:e16/64 scope link
       valid_lft forever preferred_lft forever
76: vethffb562ed@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether e2:ee:79:6f:0e:c1 brd ff:ff:ff:ff:ff:ff link-netns cni-ae6f51ec-771a-bb99-3cc8-4edce6e5c85d
    inet6 fe80::e0ee:79ff:fe6f:ec1/64 scope link
       valid_lft forever preferred_lft forever
77: vethdb1a9827@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether be:21:2d:b3:5e:4a brd ff:ff:ff:ff:ff:ff link-netns cni-e901fceb-afbc-26e9-d3b5-62db143f5480
    inet6 fe80::bc21:2dff:feb3:5e4a/64 scope link
       valid_lft forever preferred_lft forever
78: veth75e55c49@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether c2:44:fc:c8:ef:d2 brd ff:ff:ff:ff:ff:ff link-netns cni-08f6d5c0-87b2-0005-c173-dd4c514efd36
    inet6 fe80::c044:fcff:fec8:efd2/64 scope link
       valid_lft forever preferred_lft forever
79: vethfa75e739@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 6e:27:da:be:d0:2e brd ff:ff:ff:ff:ff:ff link-netns cni-9742ace1-34fe-2ad0-3225-e941a9e3df82
    inet6 fe80::6c27:daff:febe:d02e/64 scope link
       valid_lft forever preferred_lft forever
80: veth6ef29d41@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether f2:a3:fb:eb:f8:b9 brd ff:ff:ff:ff:ff:ff link-netns cni-6cca56b4-31b5-18db-00c7-a013b050672b
    inet6 fe80::f0a3:fbff:feeb:f8b9/64 scope link
       valid_lft forever preferred_lft forever
81: veth038acdc5@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether a2:b2:dd:ad:2d:6c brd ff:ff:ff:ff:ff:ff link-netns cni-e1834863-1ece-98d4-942f-b50ad06522e9
    inet6 fe80::a0b2:ddff:fead:2d6c/64 scope link
       valid_lft forever preferred_lft forever
82: vethad6bb5d3@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 9a:f3:74:cf:de:90 brd ff:ff:ff:ff:ff:ff link-netns cni-039bc926-7386-d803-4aa3-cfbb998bedc5
    inet6 fe80::98f3:74ff:fecf:de90/64 scope link
       valid_lft forever preferred_lft forever
85: veth153065d6@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether b2:f6:05:19:9b:90 brd ff:ff:ff:ff:ff:ff link-netns cni-2b346ae5-3c03-5bfe-c543-15a153055182
    inet6 fe80::b0f6:5ff:fe19:9b90/64 scope link
       valid_lft forever preferred_lft forever
86: veth17b618ee@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether a6:81:ec:14:18:72 brd ff:ff:ff:ff:ff:ff link-netns cni-6c121e4e-a5af-83e0-b1ba-de68e643fe48
    inet6 fe80::a481:ecff:fe14:1872/64 scope link
       valid_lft forever preferred_lft forever
87: vethf953b55c@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether e6:14:fb:db:44:c7 brd ff:ff:ff:ff:ff:ff link-netns cni-d30270fd-5369-682a-732a-1facd623a4bc
    inet6 fe80::e414:fbff:fedb:44c7/64 scope link
       valid_lft forever preferred_lft forever
88: vethbfbf9026@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 7e:81:89:34:50:e7 brd ff:ff:ff:ff:ff:ff link-netns cni-630c7bf3-aa47-1816-9615-1d9fb0e6e4ce
    inet6 fe80::7c81:89ff:fe34:50e7/64 scope link
       valid_lft forever preferred_lft forever
89: vethd9a136a2@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 8e:84:4a:c0:19:13 brd ff:ff:ff:ff:ff:ff link-netns cni-bf79076d-d30a-b760-acd9-5ca95b5dc9d6
    inet6 fe80::8c84:4aff:fec0:1913/64 scope link
       valid_lft forever preferred_lft forever
90: vethe6d0abdf@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 72:e9:f8:08:98:e3 brd ff:ff:ff:ff:ff:ff link-netns cni-46a7c80e-7421-e76f-5ccb-311120f26bbd
    inet6 fe80::70e9:f8ff:fe08:98e3/64 scope link
       valid_lft forever preferred_lft forever
91: vethe5105d45@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether ba:5b:35:e6:86:60 brd ff:ff:ff:ff:ff:ff link-netns cni-2832d6ac-9ce2-597a-8cc2-bc6a3411bb92
    inet6 fe80::b85b:35ff:fee6:8660/64 scope link
       valid_lft forever preferred_lft forever
92: veth24884518@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 3e:2c:63:0e:1f:45 brd ff:ff:ff:ff:ff:ff link-netns cni-2dd36c7f-82e2-8985-2531-9284547a6a7a
    inet6 fe80::3c2c:63ff:fe0e:1f45/64 scope link
       valid_lft forever preferred_lft forever
93: veth97e55a92@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 3a:4c:da:79:75:9c brd ff:ff:ff:ff:ff:ff link-netns cni-70996b81-7528-7348-0b25-37d4f1e8d8f1
    inet6 fe80::384c:daff:fe79:759c/64 scope link
       valid_lft forever preferred_lft forever
94: vethc3b3d3e5@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 22:5b:6f:ce:6c:41 brd ff:ff:ff:ff:ff:ff link-netns cni-edb0c00c-7e22-4c5e-2b20-72f566f403a3
    inet6 fe80::205b:6fff:fece:6c41/64 scope link
       valid_lft forever preferred_lft forever
95: veth54351248@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 0e:cf:87:75:c4:48 brd ff:ff:ff:ff:ff:ff link-netns cni-fb78a174-6da1-c0eb-8a80-4144c97d3158
    inet6 fe80::ccf:87ff:fe75:c448/64 scope link
       valid_lft forever preferred_lft forever
96: vethfe28343c@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether ae:3c:ae:bf:e8:06 brd ff:ff:ff:ff:ff:ff link-netns cni-1e96683f-72d6-c583-cbd1-78978eb9e7d2
    inet6 fe80::ac3c:aeff:febf:e806/64 scope link
       valid_lft forever preferred_lft forever
97: vethe1e5c7a4@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether aa:24:bc:31:ce:6d brd ff:ff:ff:ff:ff:ff link-netns cni-ff9c6dc3-df05-aea8-cbf5-8c4f0f47ef50
    inet6 fe80::a824:bcff:fe31:ce6d/64 scope link
       valid_lft forever preferred_lft forever
98: vethf991d3c3@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 2e:6f:95:b5:6a:e9 brd ff:ff:ff:ff:ff:ff link-netns cni-dbd919d1-92ca-80ea-911b-3417255dc519
    inet6 fe80::2c6f:95ff:feb5:6ae9/64 scope link
       valid_lft forever preferred_lft forever
99: vethe8935f50@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 8a:a1:8c:6b:89:98 brd ff:ff:ff:ff:ff:ff link-netns cni-fb030b24-01af-b325-e92e-71c2e840beb9
    inet6 fe80::88a1:8cff:fe6b:8998/64 scope link
       valid_lft forever preferred_lft forever
100: vethead8ad70@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 46:80:b7:2e:7b:dd brd ff:ff:ff:ff:ff:ff link-netns cni-5d66562a-b135-0d3c-4483-84c76c7a0f20
    inet6 fe80::4480:b7ff:fe2e:7bdd/64 scope link
       valid_lft forever preferred_lft forever
101: vethf7a96410@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 12:97:6d:6b:5c:22 brd ff:ff:ff:ff:ff:ff link-netns cni-9f58ace5-8650-7543-503a-aa3db7d5f3d2
    inet6 fe80::1097:6dff:fe6b:5c22/64 scope link
       valid_lft forever preferred_lft forever
102: veth1d6d99b4@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 16:16:e3:96:85:a5 brd ff:ff:ff:ff:ff:ff link-netns cni-073f2ac6-8334-64e1-f434-e8e376b5deca
    inet6 fe80::1416:e3ff:fe96:85a5/64 scope link
       valid_lft forever preferred_lft forever
103: vethb67a56b3@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether ae:2d:8f:93:be:d7 brd ff:ff:ff:ff:ff:ff link-netns cni-ee188522-cd74-e7a8-ebe1-c2427edfe847
    inet6 fe80::ac2d:8fff:fe93:bed7/64 scope link
       valid_lft forever preferred_lft forever
104: veth79cb2c89@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 92:c9:b0:d2:0b:05 brd ff:ff:ff:ff:ff:ff link-netns cni-dd8d1883-8858-6796-7686-2dfccfc4e538
    inet6 fe80::90c9:b0ff:fed2:b05/64 scope link
       valid_lft forever preferred_lft forever
105: vethc6b677e9@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether b6:2e:9c:3f:0e:94 brd ff:ff:ff:ff:ff:ff link-netns cni-caa60e3c-a589-e1b5-25b9-b236859fe35c
    inet6 fe80::b42e:9cff:fe3f:e94/64 scope link
       valid_lft forever preferred_lft forever
107: veth8f5d05cb@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether ce:ae:02:bd:64:2f brd ff:ff:ff:ff:ff:ff link-netns cni-8e438214-ec20-4ff5-942a-6a4a086bf009
    inet6 fe80::ccae:2ff:febd:642f/64 scope link
       valid_lft forever preferred_lft forever
108: veth91f0b436@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether ee:15:06:65:81:b7 brd ff:ff:ff:ff:ff:ff link-netns cni-b407aaa7-7441-60b5-e882-f647604457f4
    inet6 fe80::ec15:6ff:fe65:81b7/64 scope link
       valid_lft forever preferred_lft forever
109: vethdb9b21a1@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 22:fb:70:d6:5a:25 brd ff:ff:ff:ff:ff:ff link-netns cni-1913f768-2558-d53a-9ba4-39aca994d3f3
    inet6 fe80::20fb:70ff:fed6:5a25/64 scope link
       valid_lft forever preferred_lft forever
110: vethb7d569bc@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 26:97:3e:77:83:b9 brd ff:ff:ff:ff:ff:ff link-netns cni-8a31e83b-51fc-6440-c490-97e53eb40729
    inet6 fe80::2497:3eff:fe77:83b9/64 scope link
       valid_lft forever preferred_lft forever
111: vethb7228093@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether da:5f:ae:4a:6d:24 brd ff:ff:ff:ff:ff:ff link-netns cni-2c406b14-f3ae-6780-1cfa-602a1fc45b10
    inet6 fe80::d85f:aeff:fe4a:6d24/64 scope link
       valid_lft forever preferred_lft forever
112: veth66b1be75@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether c6:c7:b8:8a:f1:57 brd ff:ff:ff:ff:ff:ff link-netns cni-bba2a492-3547-dd81-e18d-cadf6390f219
    inet6 fe80::c4c7:b8ff:fe8a:f157/64 scope link
       valid_lft forever preferred_lft forever
113: veth82117c2f@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 8a:46:49:7c:b8:80 brd ff:ff:ff:ff:ff:ff link-netns cni-16994808-4491-3146-a3bb-2f62730530a1
    inet6 fe80::8846:49ff:fe7c:b880/64 scope link
       valid_lft forever preferred_lft forever
114: veth42dc6694@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 66:bc:1e:8d:3c:94 brd ff:ff:ff:ff:ff:ff link-netns cni-91d423cf-caeb-47e3-d190-d714d3dcc375
    inet6 fe80::64bc:1eff:fe8d:3c94/64 scope link
       valid_lft forever preferred_lft forever
115: veth5705a20e@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 36:ef:e3:c3:b9:f7 brd ff:ff:ff:ff:ff:ff link-netns cni-e46097c8-3634-b76f-6227-ca0e92e8ccb1
    inet6 fe80::34ef:e3ff:fec3:b9f7/64 scope link
       valid_lft forever preferred_lft forever
116: veth12124d9f@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 6e:31:4d:83:91:0a brd ff:ff:ff:ff:ff:ff link-netns cni-2f2410b0-cc2b-2eb2-c2b6-149789eb0e85
    inet6 fe80::6c31:4dff:fe83:910a/64 scope link
       valid_lft forever preferred_lft forever
117: vethd7a101e4@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 72:40:3b:e4:75:12 brd ff:ff:ff:ff:ff:ff link-netns cni-fd693094-808e-ba66-0ebe-22aeb611c9b9
    inet6 fe80::7040:3bff:fee4:7512/64 scope link
       valid_lft forever preferred_lft forever
118: vethd54316db@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 92:47:24:db:19:eb brd ff:ff:ff:ff:ff:ff link-netns cni-d1749b84-93fe-def7-a271-fd6c603063c6
    inet6 fe80::9047:24ff:fedb:19eb/64 scope link
       valid_lft forever preferred_lft forever
119: veth1869b616@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether b6:cc:42:ce:55:0c brd ff:ff:ff:ff:ff:ff link-netns cni-8d0cdfb6-e76a-71d7-ff6c-3c46888763f0
    inet6 fe80::b4cc:42ff:fece:550c/64 scope link
       valid_lft forever preferred_lft forever
120: veth7c9ae419@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 82:38:52:37:4c:1d brd ff:ff:ff:ff:ff:ff link-netns cni-21d2367f-0b4d-c00f-c1b6-6ab2993d8c1d
    inet6 fe80::8038:52ff:fe37:4c1d/64 scope link
       valid_lft forever preferred_lft forever
121: veth6ba19848@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 0a:7a:93:21:1a:d1 brd ff:ff:ff:ff:ff:ff link-netns cni-ef0b23b5-d070-925e-c0a6-25c06095fbc4
    inet6 fe80::87a:93ff:fe21:1ad1/64 scope link
       valid_lft forever preferred_lft forever
122: veth351b4e8b@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether ca:58:44:92:65:90 brd ff:ff:ff:ff:ff:ff link-netns cni-47acc2e0-2466-8288-0fbc-806c6b479989
    inet6 fe80::c858:44ff:fe92:6590/64 scope link
       valid_lft forever preferred_lft forever
124: veth7bf26a11@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether de:d3:94:70:79:06 brd ff:ff:ff:ff:ff:ff link-netns cni-f93eb819-b9c4-a1b3-aa38-40f8cc38b762
    inet6 fe80::dcd3:94ff:fe70:7906/64 scope link
       valid_lft forever preferred_lft forever
125: vethf3d18981@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 4a:fc:c8:1b:65:22 brd ff:ff:ff:ff:ff:ff link-netns cni-97fba97b-a5d1-aaaa-fa5e-23052af5d24a
    inet6 fe80::48fc:c8ff:fe1b:6522/64 scope link
       valid_lft forever preferred_lft forever
126: veth84a2a789@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 32:f0:25:4d:0d:61 brd ff:ff:ff:ff:ff:ff link-netns cni-7cdb801b-d3ac-70e8-7250-3411f20c7685
    inet6 fe80::30f0:25ff:fe4d:d61/64 scope link
       valid_lft forever preferred_lft forever
127: veth03b25a65@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 5a:4f:ca:38:17:2a brd ff:ff:ff:ff:ff:ff link-netns cni-d1cb096a-e049-66f6-794d-edb3fe09c894
    inet6 fe80::584f:caff:fe38:172a/64 scope link
       valid_lft forever preferred_lft forever
128: veth0f3bb7f8@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 7a:69:a5:d2:ef:e8 brd ff:ff:ff:ff:ff:ff link-netns cni-db8413f2-7384-de69-b557-222252726fb7
    inet6 fe80::7869:a5ff:fed2:efe8/64 scope link
       valid_lft forever preferred_lft forever
132: vethf8df9474@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 6a:9a:d0:3a:38:7f brd ff:ff:ff:ff:ff:ff link-netns cni-6c704ac0-c307-6e1f-5387-cc4da8b6d578
    inet6 fe80::689a:d0ff:fe3a:387f/64 scope link
       valid_lft forever preferred_lft forever
133: vethfa78db65@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 56:63:e3:79:24:f3 brd ff:ff:ff:ff:ff:ff link-netns cni-977d7507-dccf-9936-1071-7014133043d0
    inet6 fe80::5463:e3ff:fe79:24f3/64 scope link
       valid_lft forever preferred_lft forever
134: vethe75ee596@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 7e:85:14:b3:3a:e1 brd ff:ff:ff:ff:ff:ff link-netns cni-43971a84-f3e7-cf24-ea48-de08859dd65f
    inet6 fe80::7c85:14ff:feb3:3ae1/64 scope link
       valid_lft forever preferred_lft forever
135: veth7dd9a971@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether 7a:d1:8d:ef:19:84 brd ff:ff:ff:ff:ff:ff link-netns cni-91f31eb8-9899-fd48-74a8-e11b13c24ead
    inet6 fe80::78d1:8dff:feef:1984/64 scope link
       valid_lft forever preferred_lft forever
136: veth97d4b38b@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether ba:47:da:d8:68:0b brd ff:ff:ff:ff:ff:ff link-netns cni-57ae522d-e978-69bd-d717-56b0c989efb5
    inet6 fe80::b847:daff:fed8:680b/64 scope link
       valid_lft forever preferred_lft forever
139: veth412d0414@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether e2:cd:bd:b1:4a:7b brd ff:ff:ff:ff:ff:ff link-netns cni-168ed410-d90e-5d83-ee2b-eafd40028961
    inet6 fe80::e0cd:bdff:feb1:4a7b/64 scope link
       valid_lft forever preferred_lft forever
144: dummyvip0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default
    link/ether e6:44:8c:90:4b:46 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.30/32 scope global dummyvip0
       valid_lft forever preferred_lft forever
145: veth4cf31f8a@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master kube-bridge state UP group default
    link/ether da:5b:ac:23:6f:30 brd ff:ff:ff:ff:ff:ff link-netns cni-58aafae1-7da9-b07c-f8fb-f02145e34eeb
    inet6 fe80::d85b:acff:fe23:6f30/64 scope link
       valid_lft forever preferred_lft forever

I think the issue is that my primary network interface has two IPs due to the CPLB?

3: enp3s0f1np1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 3c:fd:fe:a5:b7:f5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.5/23 brd 192.168.1.255 scope global dynamic enp3s0f1np1
       valid_lft 600795sec preferred_lft 600795sec
    inet 192.168.0.30/23 scope global secondary enp3s0f1np1 # <-- HERE
       valid_lft forever preferred_lft forever
    inet6 fe80::3efd:feff:fea5:b7f5/64 scope link
       valid_lft forever preferred_lft forever
juanluisvaladas commented 1 week ago

Hi, this is indeed wrong. Can you please provide the output of k0s etcd member-list as well?

Skaronator commented 1 week ago

Sure!

root@node1:~# k0s etcd member-list
{"members":{"node1":"https://192.168.0.5:2380"}}
twz123 commented 5 days ago

I think the issue is that my primary network interface has two IPs due to the CPLB?

That smells like it's the problem, yes. The original PR just skipped the dummy interface and didn't take into account that the virtual IP could be attached to a different interface, as well. Still not sure why k0s chose the second address. The assumption was that Go's net.Interfaces() returns interfaces and addresses in the "operating system's order". K0s picks the first non-loopback address, which should have been .5. :thinking:

A proper fix would be to exclude/blacklist VRRP IPs when determining the address. The code is currently structured in a way that makes make this difficult. On the other hand, k0s should probably also prefer the primary (i.e. non-secondary) address of an interface. That's self-contained and should be enough to fix this issue.