记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

情况出现现象,测试环境的k8s节点资源不够,给所有的k8s节点关机扩容,使用jenkins更新一个服务的deployments,没有出现啥问题,开发说服务没有更新,查看pod,发现两个pod一直存在(一个是更新后的,一个是之前的)

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

思考,按道理来说,更新启动新的pod后,旧的pod应该会被kill掉,然后我尝试deleet 后再起

[[email protected] bank_operation]# kubectl delete -f k8s-deployment.yml

[[email protected] bank_operation]# kubectl apply -f k8s-deployment.yml 

再去查看

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

发现pod正常。查看一下该服务的deployment

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

FEADY和AVAILABLE数据都不对,且奇怪的是两个pod都是正常起来的,看pod日志也都没有啥问题

查看一下deployment.yml

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

也没有发现其它问题。一时间找不到问题所在。于是就想着跟新一下其它的服务看是否也有类似的问题。

更新了一下另外的一个服务,发现都是正常的,旧的pod会被杀死。说明k8s相关的服务没有啥问题,于是对比一下两个deployment.yml

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

发现只有一处不一样,滚动更新的策略上添加了minReadySeconds: 10参数,该参数的意思是:当新的pod启动10s种后,再kill掉旧的pod。

我去除这个参数后重新更新这个deployment,发现服务正常更新,想到有可能是node节点的时间和master节点的时间不对,查看一下pod所在节点的时间

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

查看一下服务的时间:

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

发现果然worker节点n2服务器时间不对,更新时间

[[email protected] ~]# systemctl start ntpd

[[email protected] ~]# systemctl enable ntpd

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

再次更新服务,发现服务正常了

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)

记一次由于服务器时间不同步导致deployments滚动更新时添加minReadySeconds策略出现的问题(之前的pod不会被kill掉)