-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
spamming error "exit status 1: iptables v1.8.4 (nf_tables): table `filter' is incompatible, use 'nft' tool." #359
Comments
Hi @wangwill Interesting! It's very curious that it only happens on the new node. I'd be interested to know what is different about the new node, e.g. are the kernel and OS version the same? To be clear, are the logs appearing on the new node or on the old nodes now that the new node was added? I see some references to this issue across GitHub, e.g. coreos/go-iptables#73 and containernetworking/plugins#461. It's odd that this happens only to Kilo. Kilo interacts with iptables using the same mechanism that Kube-Proxy does (iptables-wrapper) so I would expect that the same logs should appear on the Kube-Proxy containers. Can you check if Kube-Proxy is also complaining about the same issue? This issue seems to stem from the table in question being accessed by using the nft command before iptables. Do you maybe know if this is the case? Finally, is this issue repeatable? Ie does it happen for all new nodes and does it persist after restarts? |
Hi, Squat
Re-join the node to the cluster, the same issue reappeared.
|
@wangwill thanks for the details. So indeed, it's not just a Kilo problem; it seems everyone using iptables-nft is affected, including the network policy controller and presumably also kube-proxy. Was the cluster recently upgraded? I suspect that the issue might have been around for a while but only became obvious when the new node was added. As in, the network policy controller may have been failing to list rules ever since some event occurred on the cluster that affected nftables but we only noticed it recently when Kilo failed to add a new node, since when a new node is added, the other nodes need to update their iptables rules. Can you look back into journald to check when the error was first logged by the k3s server? |
@squat You are correct. This issue has been ongoing for a while. It is a new testing cluster and it hasn't been upgraded after the 1st init. The error log can be traced back to 27 June 2023 after I applied: But during this period, the 5 nodes cluster was running without any errors until today when the major issue occurred. This is the 1st time the error message popping up in the journal log
|
Nice find. It sounds like we might be getting somewhere. Unfortunately the Kilo manifest for kube-router does not pin the container image to a particular version. Can you check what version you are running? Maybe it's in the logs. There are several references to incompatibility issues that arrive when the k8s/host version of iptables is greater than kube-router's (xref: cloudnativelabs/kube-router#1370); I wonder if you're running into something related. |
if you remove kube-router, do the issues go away (after a reboot)? |
remove kube-router didn't fix the issue. https://docs.k3s.io/advanced#old-iptables-versions I updated the api server with "--prefer-bundled-bin" to use its bundled version of iptables binary rather than the OS ones. |
❤️ |
k3s 1.25.10+k3s1 & 1.25.11+k3s1
All nodes are using iptables v1.8.7 (nf_tables).
This is a recent issue. Previous nodes haven't encountered this error and they are functioning well.
After adding another node today, the logging system is spamming the following error:
{"caller":"mesh.go:262","component":"kilo","error":"failed to reconcile rules: failed to check if rule exists: failed to populate chains for table "filter": running [/sbin/iptables -t filter -S --wait]: exit status 1: iptables v1.8.4 (nf_tables): table `filter' is incompatible, use 'nft' tool.\n\n","level":"error","ts":"2023-07-09"}
The network topo is full-mesh.
squat/kilo:0.6.0
The text was updated successfully, but these errors were encountered: