Kubernetes Pod 永远处于待处理状态

Kubernetes Pod 永远处于待处理状态

我们有一个每“x”分钟运行一次的 CronJob。

对于每个计划,都会安排一个 Pod,该 Pod 会运行并执行其工作。

现在,2-3 天后,Pod 进入待处理状态,并且现在 Pod 没有执行其工作,甚至没有进入运行状态。

Pod 在创建时还将尝试挂载一些 NFS 挂载路径。

我们进行调查发现,启动/调度此 Pod 的节点的 Inotify 监视计数限制已超出 8192。

我还尝试使用增加 Inotify 限制

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

但同样的问题仍然存在。

我尝试捕获 CronJob 的 Pod 正在调度的节点上的 kubelet 日志。

我发现下面的日志被迭代了很多次。我明白当完成其工作的 pod 被清理时,kubelet 无法卸载 NFS 路径。

注意:下面的日志是一行,为了更好地查看,我将其分成几行。

工作节点:RHEL 7.6(也尝试过 7.9,但出现相同问题)

内核版本:3.10

Kubelet 版本:1.23.6

正在努力解决这个问题。任何建议都会有帮助。

 kubelet[1784]: E0630 03:42:39.927719    1784 nestedpendingoperations.go:335] Operation for "{volumeName:kubernetes.io/nfs/8da4fd7a-dbff-429a-a470-3c09e19a1670-infra-pv-xxxxx
podName:8da4fd7a-dbff-429a-a470-3c09e19a1670 nodeName:}" failed. 
No retries permitted until 2022-06-30 03:44:41.927675124 -0400 EDT m=+37538.561944740 (durationBeforeRetry 2m2s). 
Error: error cleaning subPath mounts for volume "infra" (UniqueName: "kubernetes.io/nfs/8da4fd7a-dbff-429a-a470-3c09e19a1670-infra-pv-xxxx") 
pod "8da4fd7a-dbff-429a-a470-3c09e19a1670" (UID: "8da4fd7a-dbff-429a-a470-3c09e19a1670") : 
error processing /var/lib/kubelet/pods/8da4fd7a-dbff-429a-a470-3c09e19a1670/volume-subpaths/infra-pv-xxxx/cronjob: 
error cleaning subpath mount /var/lib/kubelet/pods/8da4fd7a-dbff-429a-a470-3c09e19a1670/volume-subpaths/infra-pv-xxxxx/cronjob/6: 

无法卸载路径 /var/lib/kubelet/pods/8da4fd7a-dbff-429a-a470-3c09e19a1670/volume-subpaths/infra-pv-xxxxx/cronjob/6

答案1

这是一个 Kubelet 错误。

公共关系:https://github.com/kubernetes/kubernetes/pull/110973 将在 1.25 版本下发布

相关内容