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
docs needed: kube-proxy doesn't support live cleanup (kube-proxy leaves behind stale IP Table rules in KUBE-SERVICES for icmp-port-unreachable) #102314
Comments
@harshanarayana: This issue is currently awaiting triage. If a SIG or subproject determines this is a relevant issue, they will accept it by applying the The 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. |
@harshanarayana: The label(s) 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. |
@harshanarayana: The label(s) 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. |
/sig network |
I don't think that the live migration between kube-proxy implementations iptables<->ipvs is supported, at least I never heard about that and seems tricky. |
We tried implementing a cleanup mode but it was problematic and removed. (see #76109) You can run The simplest answer is to reboot. |
Let's make this a docs issues - we should write this down |
can we merge the above so that we can close this issue? |
@jayunit100 not just yet :-) wouldn't signal registration and calling clean-up would at least clean things up on graceful shutdown? Granted rules will not be there until kube-proxy is restarted. |
What happened:
As part of the Kubernetes upgrade workflow we have in place, we are upgrading kubernetes from 1.15.3 -> 1.18.15 (both versions and all versions in the middle are custom patched for different behavior of the
kubelet
andkubeadm
. None of them having anything to do with kube-proxy's IPVS), and as part of this upgrade we are also migrating thekube-proxy
fromiptables
toipvs
mode.We have calico 3.12 running on the cluster as part of the CNI stack.
Once the
kube-proxy
pods are migrated fromiptables
toipvs
mode by applying the newkube-proxy
DaemonSet manifest, the cluster has a series of stale rules forKUBE-SERVICES
chain left around that breaks the runtime state of the pods.Additional Info
169.254.0.0/16
range for internal usecasesLogs
Most of the IPs and the names have been mangled.
Stale IP Table Rules
SVC Definition
SVC Endpoint
Pod State
Kube-Proxy Manifest
What you expected to happen:
Stale IP table rules to be cleaned up once the pods and endpoints are stable with all endpoints in Ready address mode.
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Current workaround we have been putting it use the
kube-proxy
as an init container and run the--cleanup
and then bring up thekube-proxy
in IPVS mode and that seem to take care of the stale entries (but this seem to be too much of a big hammer approach of cleaning up)Environment:
kubectl version
):cat /etc/os-release
):uname -a
):# calicoctl version Client Version: v3.12.0.cisco Git commit: dca8136d Cluster Version: v3.12.0.cisco Cluster Type: k8s,bgp
The text was updated successfully, but these errors were encountered: