首页 新闻 会员 周边

如何让 k8s 在健康检查失败时强制停止 pod

0
悬赏园豆:30 [待解决问题]

请问在 pod 健康检查失败时,如何让 kubernetes 自动强制停止 pod ?

手动强制停止 pod 的操作命令是

kubectl delete pod $1 --force --grace-period 0 
k8s
dudu的主页 dudu | 高人七级 | 园豆:31003
提问于:2020-07-26 12:17
< >
分享
所有回答(1)
0

探针的配置就是干这个的啊,失败后会强制kill当前pod,然后重启一个。

Timetombs | 园豆:3954 (老鸟四级) | 2020-07-26 13:20

从我们遇到的问题看,kill 时好像没有使用 --grace-period 0

支持(0) 反对(0) dudu | 园豆:31003 (高人七级) | 2020-07-26 15:11

@dudu:

spec:
  containers:
    - image: xxx
  terminationGracePeriodSeconds: 30

默认是30s,改成0试试呢?

此外你的pod中的服务进程的PID是1吗?不太理解你需要立即kill的目的是什么。

支持(0) 反对(0) Timetombs | 园豆:3954 (老鸟四级) | 2020-07-26 16:05

@blackheart: 当某个 node 突然出现问题造成 pod 不能正常 kill ,在 GracePeriod 期间,service 会继续转发请求到这个 pod ,结果就出现 502 ,博客后台出现的几次 502 都与这个有关。

支持(0) 反对(0) dudu | 园豆:31003 (高人七级) | 2020-07-26 19:35

@dudu: node和pod同时出问题?还是node引起的pod出问题?

支持(0) 反对(0) Timetombs | 园豆:3954 (老鸟四级) | 2020-07-27 10:50

@blackheart: 不是很确定,很可能是 node 资源紧张引起的 pod 出问题

支持(0) 反对(0) dudu | 园豆:31003 (高人七级) | 2020-07-27 17:57

@dudu:

node怎么会资源紧张?

pod的request和limit是不是配置不合理?

request是不是比limit低太多了?导致pod虽然可以被调度到node上,但是随着应用对资源的消耗的增长,虽然没有达到limit的限制,但是超过了node上所能提供的资源?

支持(0) 反对(0) Timetombs | 园豆:3954 (老鸟四级) | 2020-07-27 19:01

@dudu: 如果调度到node上的pod的limit(k8s是根据request的资源调度的)超过了node的资源,node是有可能出问题的(cpu超过没问题,cpu资源可以压缩。mem资源不行)。

支持(0) 反对(0) Timetombs | 园豆:3954 (老鸟四级) | 2020-07-27 19:02

@blackheart: 应该是这种情况

随着应用对资源的消耗的增长,虽然没有达到limit的限制,但是超过了node上所能提供的资源?

支持(0) 反对(0) dudu | 园豆:31003 (高人七级) | 2020-07-27 19:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册