Just FYI, this might be something that’s better to post as a discussion on the talos GitHub repo since this isn’t a Kubernetes issue Answer from xrothgarx on reddit.com
🌐
Sidero Documentation
docs.siderolabs.com › talos › v1.8 › networking › vip
Virtual (shared) IP - Sidero Documentation
To simplify cluster creation, Talos Linux supports a “Virtual” IP (VIP) address to access the Kubernetes API server, providing high availability with no other resources required.
🌐
OneUptime
oneuptime.com › home › blog › how to set up a virtual ip (vip) for talos linux control plane
How to Set Up a Virtual IP (VIP) for Talos Linux Control Plane
March 3, 2026 - A VIP is a shared IP address that floats between your control plane nodes - one node holds it at any time, and if that node goes down, another picks it up automatically. Talos implements VIP using an etcd-backed leader election mechanism.
🌐
GitHub
github.com › siderolabs › talos › issues › 10402
VIP not working when using predictable interface names · Issue #10402 · siderolabs/talos
February 21, 2025 - node: 192.168.100.10 spec: | machine: network: interfaces: - interface: ens7 dhcp: true vip: ip: 10.0.1.100 --- node: 192.168.100.11 spec: | machine: network: interfaces: - interface: ens7 dhcp: true vip: ip: 10.0.1.100 --- node: 192.168.100.12 spec: | machine: network: hostname: talos-ctl-3 interfaces: - interface: ens7 dhcp: true vip: ip: 10.0.1.100
Author   siderolabs
🌐
Reddit
reddit.com › r/kubernetes › talos v1.10.3 & vip having weird behaviour ?
r/kubernetes on Reddit: Talos v1.10.3 & vip having weird behaviour ?
June 9, 2025 -

Hello community,

I'm finally deciding to upgrade my talos cluster from 1 controlplane node to 3 to enjoy the benefits of HA and minimal downtime. Even tho it's a lab environment, I'm wanting it to run properly.

So I configured the VIP on my eth0 interface following the official guide. Here is an extract :

machine:
    network:
      interfaces:
        - interface: eth0
          vip:
            ip: 192.168.200.139

The IP config is given by the proxmox cloud init network configuration, and this part works well.

Where I'm having some troubles undesrtanding what's happening is here :

  • Since I upgraded to 3 CP nodes instead of one, I have weird messages regarding etcd that cannot do a propre healthcheck but sometimes manages to do it by miracle. This issue is "problematic" because it apparently triggers a new etcd election, which makes the VIP change node, and this process takes somewhere between 5 and 55s. Here is an extract of the logs :

user: warning: [2025-06-09T21:50:54.711636346Z]: [talos] service[etcd](Running): Health check failed: context deadline exceeded
user: warning: [2025-06-09T21:52:53.186020346Z]: [talos] controller failed {"component": "controller-runtime", "controller": "k8s.NodeApplyController", "error": "1 error(s) occurred:
 \n\ttimeout"}


user: warning: [2025-06-09T21:55:39.933493319Z]: [talos] service[etcd](Running): Health check successful
 user: warning: [2025-06-09T21:55:40.055643319Z]: [talos] enabled shared IP {"component": "controller-runtime", "controller": "network.OperatorSpecController", "operator": "vip", "link":
 "eth0", "ip": "192.168.200.139"}
 user: warning: [2025-06-09T21:55:40.059968319Z]: [talos] assigned address {"component": "controller-runtime", "controller": "network.AddressSpecController", "address":
 "192.168.200.139/32", "link": "eth0"}
 user: warning: [2025-06-09T21:55:40.078215319Z]: [talos] sent gratuitous ARP {"component": "controller-runtime", "controller": "network.AddressSpecController", "address":
 "192.168.200.139", "link": "eth0"}
 user: warning: [2025-06-09T21:56:22.786616319Z]: [talos] error releasing mutex {"component": "controller-runtime", "controller": "k8s.ManifestApplyController", "key":
 "talos:v1:manifestApplyMutex", "error": "etcdserver: request timed out"}
 user: warning: [2025-06-09T21:56:34.406547319Z]: [talos] service[etcd](Running): Health check failed: context deadline exceeded
 user: warning: [2025-06-09T21:57:04.072865319Z]: [talos] etcd session closed {"component": "controller-runtime", "controller": "network.OperatorSpecController", "operator": "vip"}
 user: warning: [2025-06-09T21:57:04.075063319Z]: [talos] removing shared IP {"component": "controller-runtime", "controller": "network.OperatorSpecController", "operator": "vip",
 "link": "eth0", "ip": "192.168.200.139"}
 user: warning: [2025-06-09T21:57:04.077945319Z]: [talos] removed address 192.168.200.139/32 from "eth0" {"component": "controller-runtime", "controller": "network.AddressSpecController"}
 user: warning: [2025-06-09T21:57:22.788209319Z]: [talos] controller failed {"component": "controller-runtime", "controller": "k8s.ManifestApplyController", "error": "error checking
 resource existence: etcdserver: request timed out"}

When it happens every 10-15mn, it's "okay"-ish but it happens every minute or so, it's very frustrating to have some delay in the kubectl commands or simply errors or failing tasks du to that. Some of the errors I'm encountering :

Unable to connect to the server: dial tcp 192.168.200.139:6443: connect: no route to host

or

Error from server: etcdserver: request timed out

It can also trigger instability in some of my pods that were stable with 1 cp node and that are now sometimes crashloopbackoff for no apparent reason.

Have any of you managed to make this run smoothly ? Or maybe it's possible to use another mechanism for the VIP that runs better ?

I also saw it can come from IO delay on the drives, but the 6-machines cluster runs on a full-SSD volume. I tried to allocate more resources (4 CPU cores instead of two and going from 4 to 8GB of memory), but it doesn't improve the behaviour.

Eager to read your thoughts on this (very annoying) issue !

🌐
OneUptime
oneuptime.com › home › blog › how to choose a virtual ip address for talos linux
How to Choose a Virtual IP Address for Talos Linux
March 3, 2026 - In Talos Linux, the VIP serves as the stable endpoint for the Kubernetes API server. Instead of clients connecting to a specific control plane node's IP address, they connect to the VIP.
🌐
Jasongodson
jasongodson.com › blog › talos-vip-ha
High Availability Control Plane using Talos VIP
October 22, 2025 - Talos Linux has built-in support for Layer 2 Virtual IPs on control plane nodes. A VIP is a floating IP address that automatically moves between healthy control planes.
🌐
Josh's Notes
notes.joshrnoll.com › notes › deploy-talos-linux-with-local-vip-tailscale-longhorn-metallb-and-traefik
Deploy Talos Linux with Local VIP, Tailscale, Longhorn, MetalLB and Traefik | 📝 Josh's Notes
May 11, 2025 - I wrote a dumb little script that ... a VM to Talos ISO https://www.talos.dev/v1.9/introduction/getting-started/ Decide on a cluster endpoint IP – this will be the VIP of the cluster....
Find elsewhere
🌐
GitHub
github.com › siderolabs › talos › discussions › 9906
difference VIP vs KubePrism (or other) · siderolabs/talos · Discussion #9906
December 9, 2024 - Talos controlplane VIP works for both in-cluster and external access.
Author   siderolabs
🌐
Kubito
kubito.dev › posts › talos-linux-virtual-ip-setup
Setting up a shared virtual IP with Talos Linux - Kubito
April 16, 2023 - Unveil how to effectively utilize the virtual IP features offered by Talos in this insightful guide.
🌐
GitHub
github.com › siderolabs › sidero › issues › 1604
Talos VIP appears in Machine.Status.Addresses, breaking CACPPT scale-down · Issue #1604 · siderolabs/sidero
March 18, 2026 - The VIP is already exposed as Cluster.Spec.ControlPlaneEndpoint.Host. It shouldn't also appear as a machine-level address, since it's shared and floats between nodes. Could Sidero filter out addresses matching the control plane endpoint before writing them to Machine.Status.Addresses? Context: siderolabs/cluster-api-control-plane-provider-talos#242
Author   siderolabs
🌐
Medium
medium.com › @justasflash › from-no-operating-system-to-kubernetes-ha-my-real-talos-linux-bare-metal-journey-16483ec2074d
🚧 From “No Operating System” to Kubernetes HA: My Real Talos Linux Bare Metal Journey | by Jamil Shaikh | Medium
August 5, 2025 - Lesson: Check disk order with talosctl get disks ... before running any install commands! Symptom: After running what I thought was the install, rebooting gave me “No operating system found.” ... Lesson: Don’t confuse the two — your cluster depends on it! Symptom: Flood of logs: connect: no route to host 10.20.0.50:6443 · Why: In HA clusters, the API VIP ...
🌐
JoshDMoore's Blog
joshdmoore.com › home-automation-kubernetes-cluster-part-2-talos
Home Automation Kubernetes Cluster – Part 2: Installing Talos Linux
January 15, 2025 - A VIP is just an unassigned IP address on your network, and Talos ensures it’s always assigned to the active control plane node using etcd.
🌐
Talos Road Tours
talosexpress.com › home
Talos Road Tours | Discover Georgioupolis by Train and VIP Bus
May 9, 2025 - VIP Bus Tours · Contact · +30 2825083703 · taloshappy@gmail.com · Discover the enchanting landscapes and rich heritage of Crete with Talos Road Tours! Discover the enchanting landscapes and rich heritage of Crete with Talos Road Tours!
🌐
Mike's blog
mikeluttikhuis.nl › posts › talos - the immutable kubernetes os
Talos - the immutable Kubernetes OS | Mike's blog
July 30, 2024 - Fortunately, Talos Linux supports a “Virtual” IP (VIP) address to access the Kubernetes API server, providing high availability with no other resources required.
🌐
Tripadvisor
tripadvisor.com › europe › greece › crete › chania prefecture › apokoronas › georgioupolis › things to do in georgioupolis › talos express
Talos Express - All You SHOULD Know Before Going 2026 (with Reviews)
Talos Express · Booking unavailable on Tripadvisor · Want other options you can book now?Show options · Travelers talk about · “vip” · “trips” · “german” · Tips/Q&A (7)All reviews (68)Write a review · 3.9 · Good · (68) Excellent · 31 · Good ·
Address   Γεωργιούπολη, Αποκορώνας, Κρήτη 73007 Ελλάδα
(4.0)
🌐
GitHub
github.com › siderolabs › talos › discussions › 9689
IPv6 VIP and API listening · siderolabs/talos · Discussion #9689
November 9, 2024 - Talos VIP is used for Kubernetes API access only, not sure if there's any benefit in having both IPv4 and IPv6, but it's not supported at the moment.
Author   siderolabs