症状
多个 pod 出现 timed out waiting for the condition
相关 Warning
Warning FailedMount 4m kubelet Unable to attach or mount volumes: unmounted volumes=[hubble-tls host-proc-sys-kernel xtables-lock bpf-maps etc-cni-netd cilium-cgroup tmp host-proc-sys-net lib-modules kube-api-access-dlpnr cni-path cilium-run hostproc clustermesh-secrets], unattached volumes=[hubble-tls host-proc-sys-kernel xtables-lock bpf-maps etc-cni-netd cilium-cgroup tmp host-proc-sys-net lib-modules kube-api-access-dlpnr cni-path cilium-run hostproc clustermesh-secrets]: timed out waiting for the condition
短时间内无法挂载 configmap, secrets 等静态资源,即无法处理 volumeMounts
。
诊断
查询 kubelet 日志后发现相对应时间周期内多次出现:
Apr 28 15:13:20 test-node-003 kubelet[5114]: I0428 15:13:20.446025 5114 request.go:690] Waited for 1.011217867s due to client-side throttling, not priority and fairness...
代表 kubelet 受到 qps 配置影响而无法获取相对应静态资源的 custom resources
检查当前 qps 配置:
kubeAPIBurst: 10
kubeAPIQPS: 5
仍然是 v1.26 的默认值 (注:在 v1.27 后这两个默认值被修正为 100 / 50 :https://github.com/kubernetes/kubernetes/pull/116121 )
解法
提升 kubeAPIBurst
和 kubeAPIQPS
两个值。
其他
日志中的 unmounted volumes 中的顺序不能代表当前正在挂载哪个 volume ,为乱序排列,在 kubernetes v1.28 后按照字母序排列。