Exec Probe Timeout Fixed from K8s v1.20 Resulting in Calico Pods to Fail Liveness/Readiness Probes a
Problem
Exec probe timeout fixed from K8s v1.20 resulting in calico pods to fail liveness/readiness probes as default timeout is 1 second.
Environment
Platform9 Managed Kubernetes - K8s v1.20 and above
Calico CNI v3.18
Answer
Both the
calico-kube-controllerpod and all thecalico-nodepods, the probe failures are taking place as starting from K8s v1.20, the exec probe timeouts were fixed to actually respect the timeout values. The default 1 second timeout value can prove to be too low for loaded clusters.
# kubectl describe pod calico-node-25d6p -n kube-system
Name: calico-node-25d6p
Containers:
calico-node:
Liveness: exec [/bin/calico-node -felix-live -bird-live] delay=10s timeout=1s period=10s #success=1 #failure=6
Readiness: exec [/bin/calico-node -felix-ready -bird-ready] delay=0s timeout=1s period=10s #success=1 #failure=3
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Unhealthy 6m5s (x124 over 9d) kubelet Readiness probe failed:Workaround Option 1
On ALL master nodes part of the cluster, add parameter
timeoutSeconds: 10in files/opt/pf9/pf9-kube/conf/networkapps/calico-v1.20.11.yaml&/opt/pf9/pf9-kube/conf/networkapps/calico-v1.20.11-configured.yamlrespectively at 2 sections i.e in Probes for calico-kube-controllers Deployment & calico-node DaemonSet Spec.Perform complete PMK stack restart on each Master Node ONE NODE AT A TIME.
Post stack restart, the
calico-kube-controllerpod and all thecalico-node podswill be recreated with spec consisting oftimeoutSeconds=10.
Workaround Option 2
Set ExecProbeTimeout: false as a feature gate in the Dynamic Kubelet Config of the nodes. This reverts to the previous behaviour where the timeouts are ignored in K8s v1.19 and below.
Reference:
Last updated
