【问题标题】:Kubernetes Engine: Node keeps getting unhealthy and rebooted for no apparent reasonKubernetes Engine:Node 一直运行不正常并无缘无故地重新启动
【发布时间】:2019-06-05 08:49:13
【问题描述】:

我的 Kubernetes Engine 集群不断重启我的一个节点,即使该节点上的所有 pod 都“表现良好”。我试图查看集群的 Stackdriver 日志,但找不到原因。一段时间后,连续重启通常会停止,只会在几小时或几天后再次发生。

通常只有一个节点受到影响,而其他节点都很好,但删除该节点并在其位置创建一个新节点只会暂时有所帮助。

我已经禁用了节点自动修复以查看是否有影响(它之前已打开),如果我没记错的话,这是在将集群升级到 Kubernetes 1.13(特别是版本 1.13.5-gke)后开始的。升级到1.13.6-gke.0 后问题依然存在。即使创建一个新的节点池并迁移到它也没有任何效果。

集群由四个节点组成,每个节点有 1 个 CPU 和 3 GB RAM。我知道这对于 k8s 集群来说很小,但在过去它运行良好。

我在 GKE 上使用新的 Stackdriver Kubernetes Monitoring 和 Istio。

任何关于可能是什么原因或我在哪里寻找可能原因的指针将不胜感激。

Node 事件列表的屏幕截图(很高兴提供其他日志;在 Stackdriver Logging 中找不到任何有意义的内容):

【问题讨论】:

  • 不健康状态可能意味着: - 节点在给定时间阈值(大约 10 分钟)内连续检查时报告 NotReady 状态。 - 节点在给定的时间阈值(大约 10 分钟)内根本不报告任何状态。 - 一个节点的引导磁盘在很长一段时间内(大约 30 分钟)没有磁盘空间。尝试启用自动修复。
  • @Sachith.Wanni 我之前启用了自动修复并遇到了同样的问题。这就是为什么我首先尝试禁用自动修复。
  • 我将从发布kubectl describe node 开始,也许在您的节点重新启动和不健康之前发生了一些事情。你也使用资源和限制吗?这种重新启动是否可能是某些突发工作负载的结果?您是否还尝试在节点本身重新启动后检查系统日志?可以发一下结果吗?
  • 您还受到这个问题的影响吗?现在的默认版本是1.16.13-gke.401。节点重新启动的问题可能与您的节点资源不足有关。官方文档states 表明您需要 4 个节点 (n1-standard-2) 以及 2vCPU 和 8GB 内存。您是否在具有更大资源的集群上测试了您的设置/工作负载?
  • 说实话,我不确定是什么让这个问题消失了——可能是升级了我的 Kubernetes 版本或摆脱了 Istio。无论如何,它现在工作正常,只有两个 e2-medium 实例。

标签: kubernetes google-kubernetes-engine istio


【解决方案1】:

将此答案发布为社区 wiki,以提供一些故障排除提示/步骤,因为未找到根本问题。

请随意扩展。

经过以下步骤,节点重启问题不再存在:

  • 更新了 Kubernetes 版本 (GKE)
  • 正在卸载Istio
  • 使用e2-medium 实例作为节点。

正如用户@aurelius 指出的那样:

我将从发布kubectl describe node 开始,也许在您的节点重新启动和不健康之前发生了一些事情。你也使用资源和限制吗?这种重新启动可能是某些突发工作负载的结果吗?您是否还尝试在节点本身重新启动后检查系统日志?你能发布结果吗? – aurelius 2019 年 6 月 7 日 15:38

上面的评论可能是解决集群问题的一个很好的起点。

对注释中指出的集群进行故障排除的选项:

  • $ kubectl describe node 专注于输出:
    • Conditions - KubeletReady、KubeletHasSufficientMemory、KubeletHasNoDiskPressure等
    • Allocated resources - Requests 和 Limits 的计划工作负载
  • 在节点本身重启后检查系统日志:
    • GCP Cloud Console (Web UI) -> Logging -> Legacy Logs Viewer/Logs Explorer -> VM Instance/GCE Instance

检查CPU/RAM的用法也可能是受益者:

  • GCP Cloud Console (Web UI) -> Monitoring -> Metrics Explorer

也可以查看集群是否有操作:

  • gcloud container operations list

以上几点补充:

在 GKE 上使用 Istio 创建集群

我们建议在使用此插件时至少创建一个具有 2 个 vCPU 机器类型的 4 节点集群。您可以使用默认的 GKE 新集群设置部署 Istio 本身,但这可能无法提供足够的资源来探索示例应用程序。

-- Cloud.google.com: Istio: Docs: Istio on GKE: Installing

另外,Istio 的官方文档声明:

CPU 和内存

由于 sidecar 代理在数据路径上执行额外的工作,它会消耗 CPU 和内存。从 Istio 1.7 开始,代理每秒每 1000 个请求消耗大约 0.5 个 vCPU。

-- Istio.io: Docs: Performance and scalability: CPU and memory


其他资源:

【讨论】:

    猜你喜欢
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    相关资源
    最近更新 更多