gpt4 book ai didi

Kubernetes 节点未就绪 : ContainerGCFailed/ImageGCFailed context deadline exceeded

转载 作者:行者123 更新时间:2023-12-03 16:45:34 27 4
gpt4 key购买 nike

工作节点正在进入“NotReady”状态, 的输出中出现错误kubectl 描述节点 :

ContainerGCFailed rpc 错误:代码 = DeadlineExceeded desc = 超出上下文期限

环境:

Ubuntu,16.04 LTS

Kubernetes 版本:v1.13.3

Docker 版本:18.06.1-ce

Kubernetes GitHub 上有一个封闭的问题 k8 git ,由于与 Docker 问题相关的优点而关闭。

解决问题的步骤:

  • kubectl 描述节点 - 发现有问题的错误(根本原因尚不清楚)。
  • journalctl -u kubelet - 显示此相关消息:

    跳过 pod 同步 - [容器运行时状态检查可能尚未完成但 PLEG 不健康:pleg 尚未成功]

    它与这个开放的 k8 问题有关 Ready/NotReady with PLEG issues
  • 使用 cloudwatch 检查 AWS 上的节点运行状况 - 一切似乎都很好。
  • journalctl -fu docker.service :检查 docker 是否有错误/问题 -
    输出没有显示任何与此相关的错误。
  • systemctl 重启 docker - 重新启动 docker 后,节点进入“就绪”状态,但在 3-5 分钟后再次变为“未就绪”。

  • 当我将更多 Pod 部署到节点时(接近其资源容量但不认为它是直接依赖)或正在停止/启动实例(重启后没问题,但一段时间后节点未就绪,这一切似乎都开始了)。

    问题:

    错误的根本原因是什么?

    如何监控此类问题并确保它不会发生?

    这个问题有什么解决方法吗?

    最佳答案

    What is the root cause of the error?



    从我能够发现的情况来看,当与 Docker 联系时出现问题时,错误似乎发生了,要么是因为它重载,要么是因为它没有响应。这是基于我的经验以及您提供的 GitHub 问题中提到的内容。

    How to monitor that kind of issue and make sure it doesn't happen?



    似乎没有明确的缓解或监控措施。但似乎最好的方法是确保您的节点不会因 Pod 过载而过载。我已经看到它并不总是显示在节点的磁盘或内存压力上 - 但这可能是分配给Docker的资源不足并且无法及时响应的问题。建议的解决方案是为您的 pod 设置限制,以防止 Node.js 过载。

    对于 GKE 中的托管 Kubernetes(不确定,但其他供应商可能有类似功能),有一个名为 node auto-repair 的功能.这不会阻止节点压力或 Docker 相关问题,但是当它检测到不健康的节点时,它可以排空并重新部署节点。

    如果您已经拥有资源和限制,那么确保不会发生这种情况的最佳方法似乎是增加对 pod 的内存资源请求。这意味着每个节点的 pod 更少,每个节点上实际使用的内存应该更低。

    另一种监控/识别的方法可以通过SSH进入节点检查内存,进程 PS ,监控 syslogcommand $docker stats --all

    关于Kubernetes 节点未就绪 : ContainerGCFailed/ImageGCFailed context deadline exceeded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55052812/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com