如何修复 Kubernetes NodeUnderDiskPressure 错误?

Imr*_*ran 11 kubernetes

创建一个简单的 hello world 部署后,我的 pod 状态显示为“PENDING”。当我kubectl describe pod在 pod 上运行时,我得到以下信息:

Events:
  Type     Reason            Age                From               Message
  ----     ------            ----               ----               -------
  Warning  FailedScheduling  14s (x6 over 29s)  default-scheduler  0/1 nodes are available: 1 NodeUnderDiskPressure.
Run Code Online (Sandbox Code Playgroud)

如果我检查我的节点健康状况,我会得到:

Conditions:
  Type             Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----             ------  -----------------                 ------------------                ------                       -------
  OutOfDisk        False   Fri, 27 Jul 2018 15:17:27 -0700   Fri, 27 Jul 2018 14:13:33 -0700   KubeletHasSufficientDisk     kubelet has sufficient disk space available
  MemoryPressure   False   Fri, 27 Jul 2018 15:17:27 -0700   Fri, 27 Jul 2018 14:13:33 -0700   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure     True    Fri, 27 Jul 2018 15:17:27 -0700   Fri, 27 Jul 2018 14:13:43 -0700   KubeletHasDiskPressure       kubelet has disk pressure
  Ready            True    Fri, 27 Jul 2018 15:17:27 -0700   Fri, 27 Jul 2018 14:13:43 -0700   KubeletReady                 kubelet is posting ready status. AppArmor enabled
Run Code Online (Sandbox Code Playgroud)

所以问题似乎是“kubelet 有磁盘压力”,但我真的不明白这意味着什么。我无法通过 SSH 连接到 minikube 并检查其磁盘空间,因为我使用的是带有--vm-driver=none.

AVa*_*arf 9

This is an old question but I just saw it and because it doesn't have an naswer yet I will write my answer.

我遇到了这个问题,由于磁盘压力和不同的命令(例如dfdu没有帮助),我的 pod 被驱逐了很多次。

借助我在https://serverfault.com/a/994413/509898 上写的答案,我发现主要问题是 pod 的日志文件,并且由于 K8s 不支持日志轮换,它们可以增长到数百个演出。

有不同的日志轮换方法可用,但我目前正在寻找 K8s 的最佳实践,所以我还不能推荐任何特定的方法。

我希望这会有所帮助。


aur*_*ius -3

社区已向您提示了上述评论。会努力巩固它。

\n\n
\n
\n

kubelet 一个或多个驱逐信号映射到相应的节点条件。

\n
\n\n

如果已满足硬逐出阈值,或已满足软逐出阈值(与其关联的宽限期无关),则 kubelet 报告反映节点处于压力下的情况。

\n\n
\n

DiskPressure

\n\n

节点\xe2\x80\x99s 根文件系统\n 或映像文件系统上的可用磁盘空间和 inode 已满足逐出阈值

\n
\n
\n\n

因此,问题可能是磁盘空间不足或文件系统已用完索引节点。您必须了解您的环境条件,然后将它们应用到您的kubelet配置中。

\n\n

您不需要 ssh 进入 minikube,因为您是在主机内部运行它:\n--vm-driver=none -

\n\n
\n

在主机上而不是在虚拟机中运行 Kubernetes 组件的选项。\n Docker 需要使用此驱动程序,但不需要虚拟机管理程序。如果您使用--vm-driver=none,请务必为 docker 指定桥接网络。否则,它可能会在网络重新启动之间发生变化,从而导致与群集的连接丢失。

\n
\n\n

您可以尝试检查是否存在与上述主题相关的一些问题:

\n\n
kubectl describe nodes\n
Run Code Online (Sandbox Code Playgroud)\n\n

看看df报道:

\n\n
df -i\ndf -h\n
Run Code Online (Sandbox Code Playgroud)\n\n

进一步阅读一些内容,以便您可以掌握该主题:\n配置资源不足处理- 节点条件部分。

\n

  • 尽管这篇文章在 Google 上排名第一,但并没有什么帮助。它没有描述任何可以为 docker-for-desktop 执行的操作 (14认同)