Migrating from IPVS to nftables #11621
frozenprocess
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Kubernetes v1.35 marks an important turning point for cluster networking. The IPVS backend for kube-proxy has been officially deprecated, and future Kubernetes releases will remove it entirely. If your clusters still rely on IPVS, the clock is now very much ticking.
In this show-and-tell article, you will learn how to migrate an existing IPVS-based cluster to the recommended (by kubernetes) nftables backend. We’ll cover what changes under the hood, what to watch out for during the transition, and how to validate that your cluster networking continues to behave as expected.
While Kubernetes upstream now recommends
nftablesas the default path forward, it’s not the only option. We’ll also briefly touch on an alternative approach: migrating away from kube-proxy altogether by adopting theCalico eBPF dataplane. This provides a glimpse into what a modern, kube-proxy less Kubernetes networking stack can look like for teams ready to take that step.Prerequisites
NFtables doesn’t have too many requirements and by now it should be covered by most Linux distributions. Here is a short list of things that you should know before attempting to migrate:
Verify The Current Mode
To confirm if your cluster is currently in IPVS mode, check the kube-proxy logs:
kubectl logs -n kube-system daemonset/kube-proxy | grep -i ipvsOutput:
I0103 01:18:49.979100 1 server_linux.go:253] "Using ipvs Proxier"In Kubernetes v1.35+, you will also see this deprecation log:
"The ipvs proxier is now deprecated and may be removed in a future release. Please use 'nftables' instead."If your environment is set to IPVS then Calico automatically switches to its IPVS mode and utilizes IPVS based service creation to gain better performance.
You can verify this by using the following command:
kubectl logs -n calico-system daemonset/calico-node | grep -i ipvsOutput:
2026-01-03 03:09:52.996 [INFO][71] felix/driver.go 85: Kube-proxy in ipvs mode, enabling felix kube-proxy ipvs support.Migrate Kube-Proxy to NFTables
As shown in the previous log emitted by kube-proxy, the upstream Kubernetes recommendation is to switch from IPVS to nftables.
Update the ConfigMap
You need to update the mode parameter in the kube-proxy ConfigMap.
Locate the mode configuration (usually found within the config.conf data block) and change it from ipvs to nftables:
Restart Kube-Proxy
Changes to the ConfigMap do not apply automatically. You must restart the DaemonSet to pick up the changes.
Verify Kube-Proxy Migration
Once the pods restart, check the logs to confirm the new mode is active:
kubectl logs -n kube-system daemonset/kube-proxy | grep -i nftablesSwitch Calico to NFTables
After updating kube-proxy, you must instruct the Calico dataplane to switch to NFTables mode. This is done by patching the Tigera Operator's installation resource.
Step 1: Patch the Installation
Run the following command to update the Linux dataplane mode:
kubectl patch installation default --type=merge -p '{"spec":{"calicoNetwork":{"linuxDataplane":"Nftables"}}}'Step 2: Verify Calico Migration
The Tigera operator will initiate a rolling restart of all calico-node pods. Once complete, verify the change in the logs:
kubectl logs -f -n calico-system daemonset/calico-node | grep -i nftablesOutput:
2026-01-03 01:25:07.803 [INFO][837] felix/config_params.go 805: Parsed value for NFTablesMode: Enabled (from datastore (global))Switch to Calico eBPF (High Performance)
If you are already performing a migration, consider skipping NFTables entirely and moving to the Calico eBPF dataplane.
The eBPF dataplane bypasses kube-proxy entirely, offering:
Lower latency than both IPVS and NFTables.
Note: Make sure to change your kube-proxy mode to iptables before switching to eBPF.
Learn more about the Calico eBPF dataplane here.
Beta Was this translation helpful? Give feedback.
All reactions