副本控制集为daemonsets类型Pod,被delete后没有被重新拉起。

问题描述

副本控制集为daemonsets类型Pod,被delete后没有被重新拉起。

原因

此问题Pod所在node的/etc/docker/daemon.json文件被修改过,修改daemon.json时内容写错了,导致重启docker跟daemon-reload失败并报错,于是把daemon.json中填写错误的内容改正后,可以成功重启docker跟daemon-reload。但因为第一次重启失败导致了此问题Pod所在node上的kubelet、kube-proxy有了问题,所以Pod被delete时没有被重新拉起。

 

排查过程

 

1、kubectl get ds --all-namespaces   查看此Pod的副本控制集是否正常。(如果副本控制集是rs 命令:kubectl get rs    如果副本控制集是deployment 命令:kubectl get deployment)

     输出结果显示此Pod的副本控制集状态是正常。

 

2、查看此Pod daemonsets 的yaml是否正常

kubectl get ds Pod的ds名 -oyaml  
status:
currentNumberScheduled: 14
desiredNumberScheduled: 14
numberAvailable: 36
numberMisscheduled: 0
numberReady: 36
numberUnavailable: 107
observedGeneration: 1
updatedNumberScheduled: 14
  

3、kubectl get node  确认node状态是否正常,输出结果显示有问题Pod的Node是NotReady状态。

4、kubectl describe node $node名
     结果发现从前一天此Node就没有了心跳上报:

 

 

 
 5、登陆此Node上,重启docker、daemon-reload依旧NotReady,于是再重启kubelet、kube-proxy后解决。
 
 6、可以在排查时看下node的/var/log/message日志。
      或者用journalctl查看日志:
      journalctl -u kubelet |tail
      journalctl -xe
      journalctl -u kube-scheduler
      journalctl -xefu kubelet
      journalctl -u kube-apiserver

posted @ 2020-10-29 18:34  万能阿超  阅读(557)  评论(0编辑  收藏  举报