请问在 pod 健康检查失败时,如何让 kubernetes 自动强制停止 pod ?
手动强制停止 pod 的操作命令是
kubectl delete pod $1 --force --grace-period 0
探针的配置就是干这个的啊,失败后会强制kill当前pod,然后重启一个。
从我们遇到的问题看,kill 时好像没有使用 --grace-period 0
@dudu:
spec:
containers:
- image: xxx
terminationGracePeriodSeconds: 30
默认是30s,改成0试试呢?
此外你的pod中的服务进程的PID是1吗?不太理解你需要立即kill的目的是什么。
@blackheart: 当某个 node 突然出现问题造成 pod 不能正常 kill ,在 GracePeriod 期间,service 会继续转发请求到这个 pod ,结果就出现 502 ,博客后台出现的几次 502 都与这个有关。
@dudu: node和pod同时出问题?还是node引起的pod出问题?
@blackheart: 不是很确定,很可能是 node 资源紧张引起的 pod 出问题
@dudu:
node怎么会资源紧张?
pod的request和limit是不是配置不合理?
request是不是比limit低太多了?导致pod虽然可以被调度到node上,但是随着应用对资源的消耗的增长,虽然没有达到limit的限制,但是超过了node上所能提供的资源?
@dudu: 如果调度到node上的pod的limit(k8s是根据request的资源调度的)超过了node的资源,node是有可能出问题的(cpu超过没问题,cpu资源可以压缩。mem资源不行)。
@blackheart: 应该是这种情况
随着应用对资源的消耗的增长,虽然没有达到limit的限制,但是超过了node上所能提供的资源?