查看containerd日志显示如下信息
OCI runtime exec failed: exec failed: unable to start container process: read init-p: connection reset by peer: unknown"
查看Pod日志中显示
pthread_create failed: Resource temporarily unavailable
通过监控系统查看节点的进程数
topk(3,sum(container_threads{cluster="env",node="worker-13"}) by (pod))
发现有两个Pod分别启动了两万左右的线程,导致节点资源不足。需要要求开发修改代码。
如果要在Kubernete中对Pod启动的线程做限制的话,需要通过配置Kubelet的启动参数。具体可以参考进程 ID 约束与预留
如果需要更多的进程数上限则需要调整内核参数中的kernel.pid_max
和kernel.threads-max
关于kernel.pid_max
和kernel.threads-max
的解释可以参考一下这个链接了解 pid_max、ulimit -u 和 thread_max 之间的区别