-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Incompatible ipset protocol version (7) will cause problems #5011
Incompatible ipset protocol version (7) will cause problems #5011
Comments
I can help with testing if you provide an updated Calico test-image. |
Pinging @caseydavenport |
Stand-alone test with ipset;
|
Kubernetes v1.23.0
|
There is probably other compatibility issues since protocol version 7 seems to be used in my case. Ubuntu host -- k8s node :
Ubuntu host -- calico-node pod
|
Our distro marked Calico as not supported with Kuberntes v1.23 due to this incompatibility |
On Fedora 35
|
@Meroje What linux kernel version do Fedora 35 use? I am using linux-5.15.2 and only protocol versions 6-7 are supported, not version 8. |
It's on 5.15.6 indeed not even the next 5.16 seem to not have that number edit I believe this is it https://github.com/torvalds/linux/blob/8008293888188c3923f5bd8a69370dae25ed14e5/net/netfilter/ipset/ip_set_hash_ipportnet.c#L31 |
FWIW, our overnight runs (on ubuntu 20.04) show Calico working just fine with k8s 1.23, so this isn't a blanket incompatibility. |
That's probably because you're using proxy-mode=iptables |
I got errors when using ipvs mode for dualstack use, iptables is fine on my 1.23 cluster |
Since CentOS 8 is on EOL right now, this is most likely to be fixed once calico node switches from CentOS 8 to CentOS Stream 9 since it includes ipset v7.11 & kernel 5.14. |
Yeah, reverting kube-proxy to iptables mode avoids the issue of course, but we'd like to stick to ipvs. We're using other CNIs until Calico supports this again. |
I can confirm from Slack that there was some work from @song-jiang for switching the base images to CentOS Stream 9 which would provide a sufficient version of ipset. So at least we can tell that this would be fixed in a future release. Until then ipvs proxy mode SHOULD be disabled to make Calico work on kubernetes >= 1.23. |
Hmm, I wonder what I do wrong that Calico v3.21.2 works fine for me with kube-proxy v1.23.1 in ipvs mode. Could it be that I miss some configuration, so kube-proxy is runing in ipvs mode while calico keeps using iptables? |
Can you check calico-node logs and ipset version on host VS on calico-node pod ? |
Please note that incoming traffic works with proxy-mode=ipvs. Outgoing doesn't. |
Sure, thanks! Here it is:
|
What about the kernel version ? |
I'm running EDIT: Let me know if this is off-topic, maybe would be better to discuss it on Slack or something. |
Interesting, this kernel version doesn't include bucketsize in all hash types for the ipset kernel module that's why you seem to have no issues. EDIT : Kernel >= 5.11 includes bucketsize in all hash types. ipvs proxy mode SHOULD be disabled to make Calico work on kubernetes >= 1.23 AND host kernel >= 5.11 |
FYI: The ipset changes is not part of v3.22.0 since it takes more time to get everything fully tested. It should be in v3.22.1. |
Yep that's right, the fix has been merged to master but needs cherry-picking to the v3.22 branch still. Once that's done it will be in v3.22.1. We didn't get this into v3.22.0 because the fix came in a bit later and we had already entered code freeze. |
I am running 1.23.4 with Calico3.22 on Ubuntu 20.04.4 LTS in IPVS mode, and I can confirm this is still NOT fixed. |
I mentioned above that it works for me in IPVS mode. But I was wrong - It starts but outgoing connections fail. |
I can confirm this would be fixed in the next release. |
I have just rolled out 3.22.1 and I am still seeing the same error message
and still seeing |
@leoweiyu Would you mind raising as a new Issue (and link to this one) please? |
* Calico aims to fix projectcalico/calico#5011
FROM following references: - Incompatible ipset protocol version (7) will cause problems - projectcalico/calico#5011 - Update Node Dockerfile to install ipset 7.11 - projectcalico/calico#5485 - update ipset for arm64 - projectcalico/calico#6262
FROM following references: - [Incompatible ipset protocol version (7) will cause problems](projectcalico/calico#5011) - [Update Node Dockerfile to install ipset 7.11](projectcalico/calico#5485) - [update ipset for arm64](projectcalico/calico#6262)
Expected Behavior
Calico can handle different
ipset
protocol versions. At least 6-7.Current Behavior
If K8s upgrades to
ipset
>= v7.0 outgoing connects from pods fail.Possible Solution
Upgrade the calico image to include
ipset
v7.x since it's backward compatible.Steps to Reproduce (for bugs)
ipset
v7.x (this is non-trivial if installed with kubeadm)The
kube-proxy
(v1.22.2) image includesipset
v6.38. It must be changed to some v7.x version. How that is done I can't say. I startkube-proxy
as a program (no container) so for me it's simply to change theipset
on the node.Context
While this isn't a problem at the moment, it will be the day K8s upgrades to iset v7.x
Your Environment
The text was updated successfully, but these errors were encountered: