-
Notifications
You must be signed in to change notification settings - Fork 754
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
[driver] refactor pod network configuration not to use static ARP entry #2118
Conversation
I tried running this patch (+ nftables) in our e2e setup and it seems to be working: |
@olemarkus thanks for confirming! |
@veshij we are working on testing this internally. Will provide a timeframe later this week after we get this assigned |
thanks for update! |
I'm investigating few issues around Security group per pod feature which seems to be affected by this change |
@jaydeokar I can help with troubleshooting if you could provide some details on the issue. |
@veshij
|
The TL;DR here is that in SGPP strict mode, the container is unable to resolve the ARP binding for its gateway addr (link-local address). In SGPP standard mode and non-SGPP, the container gets an ARP reply mapping the link-local IP to the host-side veth MAC. In SGPP strict mode, we configure IIF-based IP route rules: https://github.com/aws/amazon-vpc-cni-k8s/blob/master/cmd/routed-eni-cni-plugin/driver/driver.go#L557 , and we are trying to determine why the kernel does generate ARP reply in this case. Still digging... |
This pull request is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 14 days |
Pull request closed due to inactivity. |
uh-oh, I somehow forgot about it. |
Any news on this one? |
ugh, totally forgot about this one. |
@veshij any updates here? Can this be merged? |
This pull request is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 14 days |
Pull request closed due to inactivity. |
Not stale..need to debug the SGPP failures. |
This pull request is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 14 days |
Just commenting to keep this alive, we are very interested in seeing this fixed. Thank you! |
bump |
I picked this up again, and I still cannot determine why in SGPP strict mode, the pod is unable to ARP for its host veth:
In SGPP strict, we have a rule for pod traffic to force everything through the branch ENI:
And that routing table is:
The host veth still has
And I don't think any sysctls are preventing this from succeeding. Still digging |
This pull request is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 14 days |
/not stale |
Closing this pull request as we cannot implement this approach without breaking the Security Groups for Pods architecture. The recommendation for host operating systems is to set |
What type of PR is this?
bugfix
Which issue does this PR fix:
Fixes: #2103
What does this PR do / Why do we need it:
This PR changes pod network confuguration so static ARP entry for host's veth mac address is no longer need.
Previous configuration:
Updated configuration:
More details in #2103
TLDR: on Ubuntu 22.04+ udevd assigns permanent mac address to host system veth interface once it's moved to host network namespace. Since it happens after the pod network is configured with non-permanent mac address - pod has no network connectivity.
Why not fix existing pod network configuration?
I was not able to find a good way to monitor the udev-induced mac address change. The only option would be to add a sleep with some arbitrary timeout which either will slow-down pod allocation or will not be enough on heavy-loaded systems.
If an issue # is not available please add repro steps and logs from IPAMD/CNI showing the issue:
Testing done on this change:
Verified updated configuration works on k8s cluster running on AWS EC2.
Automation added to e2e:
Will this PR introduce any new dependencies?:
No
Will this break upgrades or downgrades. Has updating a running cluster been tested?:
Should not/No
Does this change require updates to the CNI daemonset config files to work?:
No
Does this PR introduce any user-facing change?:
It changes pod network configuration as well as adds link-local address to host system's veth interface.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.