Kubernetes节点随机重启

时间:2017-12-13 01:10:52

标签: debian kubernetes google-compute-engine reboot

我迫切需要帮助。我注意到我的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.logkubelet.logsyslogmessageskern.log或{{1}中找到任何内容}或node-problem-detector.logauth.log

我在Debian上运行Kubernetes 1.6.0

unattended-upgrades.log

2 个答案:

答案 0 :(得分:1)

可以通过查看日志来完成故障排除,以便您可以获得更多信息以查看使节点重新启动的内容。当重新启动时,kublet进程重新启动,并且在收集第一个指标之前尝试获取指标。这就是重启kublet后看到警告错误的原因。这通常不是问题,因为kubelet最终会重试,并且一旦度量标准收集开始就应该成功。在kubelet重新启动后,此错误尤为明显。

此错误并不意味着它可能是Kubernetes问题,因为节点可能由于其他问题而重新启动。 最初的故障排除是根据documentation

查看实例日志
  1. 在Google云端平台上,点击“产品”和“服务是左上角有四个栏的图标。
  2. 在菜单上转到“Stackdriver monitoring”部分,将鼠标悬停在“logging”上并点击日志。
  3. 将基本选择器菜单悬停在要查看的资源上,例如“GCE VM Instance”,然后单击要为其检索日志的实例。
  4. 时间范围选择器下拉菜单允许您过滤日志中的特定日期和时间。
  5. 页面顶部的流式选择器控制是否在新的日志条目到达时显示。
  6. 最右侧的“视图选项”菜单包含其他显示选项。
  7. 每个日志条目前面的扩展箭头(▸)可让您查看条目的完整内容。
  8. 您还可以connect to the cluster查看/ var / log / messages文件以获取任何错误指示。您可以使用类似于以下的命令,查看实例重新启动时是否有任何错误:

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

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

    另请查看VM实例serial console输出:

    转到“计算引擎”>实例并单击“VM实例”以查看VM实例详细信息。 向下滚动到“Logs”部分,然后单击“Serial port 1(console)”。 您将通过这种方式获得更多日志。

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

答案 1 :(得分:0)

我不确定问题是什么,但在将kubernetes节点从container-vm-v20170214映像切换到gci-stable-56-9000-84-2之后,重启似乎已停止。

我选择了gci-stable-56-9000-84-2,因为那是我的kubernetes大师们正在运行的,他们似乎很稳定。我不确定为什么Kubernetes 1.6.0默认使用不同的图像作为母版和节点。