-
Notifications
You must be signed in to change notification settings - Fork 797
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
Delete stale UDP conntrack entries when adding new Portmaps to containers #553
Conversation
Signed-off-by: Antonio Ojea <aojea@redhat.com>
13407be
to
3ae998e
Compare
WIP it needs a test |
/assign @squeed |
93e3f23
to
2346d32
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM if the error return is modified
conntrack does not have any way to track UDP connections, so it relies on timers to delete a connection. The problem is that UDP is connectionless, so a client will keep sending traffic despite the server has gone, thus renewing the conntrack entries. Pods that use portmaps to expose UDP services need to flush the existing conntrack entries on the port exposed when they are created, otherwise conntrack will keep sending the traffic to the previous IP until the connection age (the client stops sending traffic) Signed-off-by: Antonio Ojea <aojea@redhat.com>
@squeed would it be possible to get a new minor/patch release including this change? |
I think we should wait until we have have confirmation that it solves the original issue kubernetes/kubernetes#95258 , just for double checking |
I was able to test it using the following yaml that I used to reproduce the error originally and it works.
|
Can we cut a minor release now that the kubernetes/kubernetes#95258 issue is closed? |
I just hit this issue on GKE (version: 1.19.8-gke.1000). How do I check if this fix made it there or not? My calico node has: Image:
Thank you |
Your cniplugin version has to be 0.9.0 or newer |
Yes, thank you. Given this is all installed by GKE automatically, do you know where I could see what the plugin version being used is? |
Check in |
What should I be looking for in there?
The only somewhat relevant thing I see is: gke-internal-configure-helper.sh: "cniVersion": "0.3.1", Is that the right thing to look at? That seems like a very old version. |
If you just run the binary |
gke-cluster0-pool0-6e5903aa-2vmq / # /home/kubernetes/bin/portmap
CNI portmap plugin v0.8.0
Thank you. I assume this is something that Google needs to fix, or does this come from somewhere else that they inherit?
…On Fri, Mar 19, 2021, at 7:59 AM, Bryan Boreham wrote:
If you just run the binary `/home/kubernetes/bin/portmap` it should print its version to stdout.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#553 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AAD4PP5DPAIHYOW46GXRKNLTEM4DLANCNFSM4TZYPR6Q>.
|
I see kubernetes/kubernetes#95258 (comment) ... thank you. |
conntrack does not have any way to track UDP connections, so
it relies on timers to delete a connection.
The problem is that UDP is connectionless, so a client will keep
sending traffic despite the server has gone, thus renewing the
conntrack entries.
Pods that use portmaps to expose UDP services need to flush the existing
conntrack entries on the port exposed when they are created,
otherwise conntrack will keep sending the traffic to the previous IP
until the connection age (the client stops sending traffic)
Fixes: #123