Debian Kubernetes节点随机重新启动

Debian Kubernetes节点随机重新启动,debian,kubernetes,google-compute-engine,reboot,Debian,Kubernetes,Google Compute Engine,Reboot,我急需帮助。我注意到我的Kubernetes仆从/节点每天以随机间隔重新启动几次,我不知道为什么。这对我来说是个大问题,因为每次重新启动都会导致节点上每个应用程序大约10分钟的停机时间 当它们重新启动时,我可以看到这样的节点事件 Events: FirstSeen LastSeen Count From SubObjectPath Type Reason

我急需帮助。我注意到我的Kubernetes仆从/节点每天以随机间隔重新启动几次,我不知道为什么。这对我来说是个大问题,因为每次重新启动都会导致节点上每个应用程序大约10分钟的停机时间

当它们重新启动时,我可以看到这样的节点事件

Events:
  FirstSeen     LastSeen        Count   From                                            SubObjectPath   Type            Reason                  Message
  ---------     --------        -----   ----                                            -------------   --------        ------                  -------
  9m            9m              1       kubelet, kubernetes-minion-group-7j5x                           Normal          Starting                Starting kubelet.
  9m            9m              1       kubelet, kubernetes-minion-group-7j5x                           Warning         ImageGCFailed           unable to find data for container /
  9m            9m              2       kubelet, kubernetes-minion-group-7j5x                           Normal          NodeHasSufficientDisk   Node kubernetes-minion-group-7j5x status is now: NodeHasSufficientDisk
  9m            9m              2       kubelet, kubernetes-minion-group-7j5x                           Normal          NodeHasSufficientMemory Node kubernetes-minion-group-7j5x status is now: NodeHasSufficientMemory
  9m            9m              2       kubelet, kubernetes-minion-group-7j5x                           Normal          NodeHasNoDiskPressure   Node kubernetes-minion-group-7j5x status is now: NodeHasNoDiskPressure
  9m            9m              1       kubelet, kubernetes-minion-group-7j5x                           Warning         Rebooted                Node kubernetes-minion-group-7j5x has been rebooted, boot id: bed35a9d-584c-4458-8a04-49725200eb0c
  9m            9m              1       kubelet, kubernetes-minion-group-7j5x                           Normal          NodeNotReady            Node kubernetes-minion-group-7j5x status is now: NodeNotReady
  8m            8m              1       kubelet, kubernetes-minion-group-7j5x                           Normal          NodeReady  
当我检查节点中的重新引导历史记录时,它似乎是随机发生的

kubernetes-minion-group-7j5x:~$ last reboot
reboot   system boot  3.16.0-4-amd64   Wed Dec 13 00:36 - 01:01  (00:25)    
reboot   system boot  3.16.0-4-amd64   Tue Dec 12 23:24 - 01:01  (01:37)    
reboot   system boot  3.16.0-4-amd64   Mon Dec 11 05:43 - 01:01 (1+19:18)   
reboot   system boot  3.16.0-4-amd64   Sun Dec 10 23:46 - 01:01 (2+01:15)   
因为重启是在Kubernetes事件中,这是否意味着Kubernetes正在进行重启,或者可能是其他过程?如何对此进行故障排除?我不知道现在该如何着手调查此事

kube controller manager.log
kubelet.log
syslog
消息
kern.log
节点问题检测器.log
auth.log
无人值守升级.log
中,我似乎找不到任何东西

我正在Debian上运行Kubernetes 1.6.0

Linux kubernetes-minion-group-7j5x 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u5 (2017-09-19) x86_64 GNU/Linux

故障排除可以通过查看日志来完成,这样您就可以获得更多信息,了解是什么导致节点重新启动。重新启动时,kublet进程将重新启动,并尝试在收集第一个度量之前获取度量。这就是为什么在重新启动kublet后会看到警告错误。这通常不是问题,因为kubelet最终会重试,并且在度量集合开始后应该会成功。在kubelet重新启动后,此错误尤其明显

此错误并不意味着可能是Kubernetes问题,因为节点可能由于其他问题而重新启动。 最初的故障排除是按照以下步骤查看实例日志:

  • 在谷歌云平台上,点击产品和服务图标,该图标在左上角有四个栏
  • 在菜单上转到“Stackdriver监控”部分,将鼠标悬停在“日志记录”上,然后单击日志
  • 在“基本选择器”菜单上,将鼠标悬停在要查看的资源上,例如“GCE VM实例”,然后单击要检索日志的实例
  • 时间范围选择器下拉菜单可用于筛选日志中的特定日期和时间
  • 页面顶部的流式选择器控制新日志条目到达时是否显示
  • 最右边的视图选项菜单有附加的显示选项。
  • 扩展器箭头(▸) 在每个日志条目前面,您可以查看条目的完整内容
  • 您还可以查看/var/log/messages文件,查看是否存在任何错误指示。您可以使用类似于以下的命令,查看实例重新启动时是否存在任何错误:

    cat/var/log/messages | egrep-i{“警告|错误|内核|重启”}

    您还可以在“less/var/log/messages”中使用as,并使用“/”搜索节点重新启动的日期和时间

    另请查看VM实例输出:

    转到“Compute engine'>实例”并单击“VM实例”以查看VM实例的详细信息。 向下滚动至“日志”部分并单击“串行端口1(控制台)”。 通过这种方式,您将在实例上获得更多日志


    我还想指出,您没有使用最新版本的Kubernetes,升级可能有用。

    我不确定问题出在哪里,但在将Kubernetes节点从container-vm-v20170214映像切换到gci-stable-56-9000-84-2之后,重新启动似乎已经停止


    我选择gci-stable-56-9000-84-2是因为我的kubernetes masters运行的是gci-stable-56-9000-84-2,它们看起来很稳定。我不知道为什么kubernetes 1.6.0默认情况下会对masters和nodes使用不同的映像。

    你在GKE中运行它吗?不,我在GCE上运行kubernetes。谢谢你的帮助!我运行了
    cat/var/log/messages | egrep-I{“warning | error | restart”}
    却一无所获,当我运行
    cat/var/log/messages | egrep-I{“warning | error | kernel | restart”}
    时,我得到了大量的输出,这些输出看起来就像是常规启动的东西。在重启之前,我唯一看到的是
    Dec 13 10:17:14 kubernetes-minion-group-d6sv内核:[185042.033885]aufs au_选择验证:1570:docker[7014]:dirperm1通过较低分支上的权限位来破坏保护
    ,但始终存在大量的权限位,因此它似乎不是重新启动的原因。我在stackdriver日志中也没有看到任何明显的内容。欢迎使用。搜索该错误字符串并在命令末尾添加-C5或-C10可能会很有用,以查看更多lines在错误消息之前和之后。例如cat/var/log/messages | grep-i'docker[7014]:'-C5您还可以使用日期,类似于错误开始时显示的日期,并查看它是否返回任何有用的内容。还可以查看VM实例[serial console][1]输出:转到“Compute engine'>实例”并单击“VM实例”以查看VM实例的详细信息。向下滚动到“日志”部分并单击“串行端口1(控制台)”,您将通过这种方式获得实例的更多日志。[1]: