正确处理StatefulSet应用所在节点故障
问题: 从下图可看出k8s集群节点node1不可用,其节点旗下statefulSet应用也出现Unknown,并且长时间也不会自动恢复、调度到其他节点上,describe barry-1出现Terminating<终止信号>却不作为。[root@k8s-master ~]# kubectl get nodesNAMESTATUSROLES ...
·
问题: 从下图可看出k8s集群节点node1不可用,其节点旗下statefulSet应用也出现Unknown,并且长时间也不会自动恢复、调度到其他节点上,describe barry-1出现Terminating<终止信号>却不作为。最后执行删除异常pod也无作为
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 20d v1.14.0
k8s-node1.novalocal NotReady <none> 20d v1.14.0
k8s-node2.novalocal Ready <none> 20d v1.14.0
[root@k8s-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
barry-0 1/1 Running 0 5d7h
barry-1 1/1 Unknown 0 14d
barry-2 1/1 Running 0 4d6h
[root@k8s-master ~]# kubectl delete pods barry-1
pod "barry-1" deleted
[root@k8s-master ~]# kubectl get pods #多次列举仍无反应
NAME READY STATUS RESTARTS AGE
barry-0 1/1 Running 0 5d7h
barry-1 1/1 Unknown 0 14d
barry-2 1/1 Running 0 4d6h
原因:
1.当节点正常通信时,节点会回报旗下pod状态,若pod状态错误,主节点将会标记它为删除,节点会执行终止运行该Pod.
2.为什么不会自动恢复并调度:从上面可知,barry-1所在的节点未NotReady,主节点与node1节点无法通信,node1节点的kubelet无法收到主节点的驱逐命令
如何正确处理故障的Pod
1.恢复节点,在故障的几分钟内,主节点仍会等待pod的恢复,若持久几分钟仍不见恢复,会被标记删除,当节点恢复时,会执行删除,删除完毕后,主节点会重新调度新pod替代
2.强制删除,前提要求是该故障节点不会再被主节点访问到(forever),否则不要强制删除有状态的pod
[root@k8s-master ~]# kubectl delete pods barry-1 --force --grace-period 0
再次列举pods
[root@k8s-master ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
barry-0 1/1 Running 0 5d7h
barry-1 0/1 ContainerCreating 0 6s
barry-2 1/1 Running 0 4d6h
查看barry-1已从Unknown变为ContainerCreating
,状态恢复
更多推荐
已为社区贡献10条内容
所有评论(0)