-
Notifications
You must be signed in to change notification settings - Fork 744
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
aws-vpc-cni-init 1.7.3 Init:CrashLoopBackOff due to sysctl: cannot stat /proc/sys/net/ipv4/tcp_early_demux: No such file or directory #1241
Comments
@mickael-ange The v1.7.2 release does not have the 3.10 is a very old kernel, other things like |
[centos@ip-192-168-9-194 ~]$ sysctl -e -w "net.ipv4.tcp_early_demux=1" [centos@ip-192-168-9-194 ~]$ uname -a [centos@ip-192-168-9-194 ~]$ |
@mickael-ange Thanks for catching this. I've put some more details in #1242, but basically for kernels older than 4.6, using TCP health checks for pods using security groups for pods will not work. UDP or exec checks will still work, but since this is a kernel issue the, only other option is to use at least 4.6 (released May 2016). |
Thanks for your prompt answers and the quick PR. CentOS 7 end of life is scheduled for June 30, 2024. CentOS 8 is only a year old and was not on AWS until recently. I have not planned to migrate all my CentOS 7 to CentOS 8 yet. I will try 1.7.2 tomorrow or maybe 1.7.4 ;). Thanks again. |
@mickael-ange Tomorrow you should be able to try with v1.7.4, preparing a new release right now. Note that TCP health checks will not work on CentOS 7 because of the old kernel (Early TCP demux was added in 3.6, the flag to disable it first in 4.6). To work around that you will have to use UDP or exec health checks. We will be sure to update the documentation around this. Thanks again for reporting the issue! |
Just released v1.7.4! 🚀 Give it a try with:
|
1.7.4 can start now. But I'm worry about:
IIUC pods configured with |
@mickael-ange Yes, that is correct. Since early tcp demux is a "feature" in the kernel TCP stack since 3.6, there is no way around it. The reason this happens is explained in length in #1212, but in short it happens because security groups are enforced on the interface, so we can't shortcut the traffic from kubelet running in the host network namespace directly to the pod having a security group. We need to send it out through eth0 and let it go back in through the pod ENI, passing the SG check. This is somewhat unusual, and trips up the kernel so when the response from the pod comes back, the kernel drops the packet. Either you will need to use a newer kernel, or use UPD or exec health checks to use the per pod security group feature with probes. |
Thanks @mogren to summarize #1212's. My ultimate goal is to prepare to migrate from EKS/EC2 self-managed workers to EKS/Fargate when security group for pods will be available on it. However, I'm wondering if is there a plan to support it on AWS Fargate? If not, I don't really need to use security group for pods on EC2 since we already use Calico as network policy engine. |
aws/containers-roadmap#625 This might be the one you’re probably looking for. |
What happened:
I'm trying to upgrade aws-vpc-cni to 1.7.3 on an AWS EKS cluster version 1.17 with CentOS 7 self-managed nodes. My goal is to to use security groups for pods.
However
aws-vpc-cni-init
v1.7.3 doesInit:CrashLoopBackOff
due tosysctl: cannot stat /proc/sys/net/ipv4/tcp_early_demux: No such file or directory
.Indeed if I log into my worker node I got the same error with this command:
Has anyone hit this issue?
Environment:
kubectl version
):cat /etc/os-release
):uname -a
):The text was updated successfully, but these errors were encountered: