-
Notifications
You must be signed in to change notification settings - Fork 39.3k
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
Restarting iptables kube-proxier causes connections to fail #75360
Comments
@kubernetes/sig-network-bugs |
@PaulFurtado: Reiterating the mentions to trigger a notification: In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Possibly a bug in the proxy. It flushes iptabes if the proxier is able to use IPVS which seems like the wrong behavior to me if there are shared tables/chains between the IPVS and iptables proxier. One workaround I can think of right now is to unload the ipvs kernel module to skip this check. |
/assign |
@andrewsykim oh, that's an interesting workaround, I'll give that a shot, thanks! |
np, I'll try to work on the bug fix in the meantime! |
/triage unresolved |
@andrewsykim note that unloading the ip_vs module is not actually enough of a workaround because kube-proxy will load the kernel module if it sees that it is available. If I unload the ip_vs module and then rename ip_vs.ko to something else in Dug slightly further: the way it probes for modules is by actually running modprobe. So the simplest hack that allows us to keep ip_vs loaded for other things on the system is to put a modprobe script on its PATH that just always exits 1 for the ip_vs modules. (We can stop mounting the modules dir into the kube-proxy container in our kubernetes clusters, but we also run kube-proxy on non-kubernetes nodes via the init system, so the PATH hack works well enough there). This should hold us over fine until we get to a version with your fix in it. |
Good to know, thanks for sharing! |
/assign @vllry |
Quick update on this issue from today's SIG Network call: we're going to try to get rid of the automatic proxy clean up altogether for v1.14.1 since this is considered a bug. @vllry is working on the KEP & implementation. |
What happened:
When restarting kube-proxy in iptables mode, there will be several seconds of timeouts because it flushes the KUBE-SERVICES nat chain and several others.
What you expected to happen:
Restarting kube-proxy should not impact traffic in any way.
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Running with
-v=6
makes it pretty clear what's happening:it says it's cleaning up inactive rules, but these are crucial to the iptables proxier. You can trivially reproduce by just running:
Environment:
kubectl version
): 1.10.11cat /etc/os-release
): customuname -a
): 4.14.77-hs623.el6.x86_64We're running kube-proxy 1.10.11, but I've confirmed this issue with kube-proxy 1.13.4 too
The text was updated successfully, but these errors were encountered: