From 117df3de4ded942b098574de04f2dd4ca71b1614 Mon Sep 17 00:00:00 2001 From: Alessio Attilio Date: Wed, 11 Feb 2026 20:00:48 +0100 Subject: [PATCH] pkg/proxy/nftables: fix kube-proxy crash with newer nftables versions Fixes kube-proxy's nftables mode to work on systems with nft 1.1.3. --- pkg/proxy/nftables/proxier.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/pkg/proxy/nftables/proxier.go b/pkg/proxy/nftables/proxier.go index 7e1e7c3299f..49c8bd9fa65 100644 --- a/pkg/proxy/nftables/proxier.go +++ b/pkg/proxy/nftables/proxier.go @@ -1153,24 +1153,20 @@ func (proxier *Proxier) syncProxyRules() (retryError error) { ipvX_addr = "ipv6_addr" } + var err error + var existingChains sets.Set[string] - existingChainsList, err := proxier.nftables.List(context.TODO(), "chain") - if err == nil { - existingChains = sets.New(existingChainsList...) - } else { - proxier.logger.Error(err, "Failed to list existing chains") - } var existingAffinitySets sets.Set[string] - existingSets, err := proxier.nftables.List(context.TODO(), "sets") - if err == nil { + if allObjects, err := proxier.nftables.ListAll(context.TODO()); err == nil { + existingChains = sets.New(allObjects["chain"]...) existingAffinitySets = sets.New[string]() - for _, set := range existingSets { + for _, set := range allObjects["set"] { if isAffinitySetName(set) { existingAffinitySets.Insert(set) } } } else { - proxier.logger.Error(err, "Failed to list existing sets") + proxier.logger.Error(err, "Failed to list existing nftables objects") } // Accumulate service/endpoint chains and affinity sets to keep.