K3s:解决 “Eviction manager: attempting to reclaim” resourceName=”ephemeral-storage” 问题

87次阅读
没有评论

问题描述

当运行 kubectl get pods 命令时,你发现所有的 Pod 都处于 Pending 状态。同时,在检查 journalctl -u k3s 命令输出时,你发现了一些与 “Eviction manager” 相关的错误消息。你怀疑这是由于系统磁盘空间不足导致的问题,因为你的系统磁盘空间占用率已经非常高。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1:调整 Eviction Manager 设置

“Eviction manager” 是 Kubernetes 中的一项功能,它负责管理节点上资源的回收和释放。默认情况下,K3s 在节点磁盘空间低于一定阈值时,会启动 “Eviction manager” 来尝试回收资源。你可以通过调整 “Eviction manager” 的设置来解决这个问题。

以下是调整 “Eviction manager” 设置的步骤:

  1. 编辑 K3s 的配置文件 /etc/rancher/k3s/config.yaml

  2. 在该配置文件中,找到并修改 kubelet-arg 字段,添加以下参数来调整 “Eviction manager” 设置:
    “`yaml
    kubelet-arg:

    • “eviction-minimum-reclaim=imagefs.available=2%,nodefs.available=2%”
    • “eviction-hard=memory.available<500Mi,nodefs.available<10Gi”
      “`

请根据你的实际需求调整上述参数。这些参数将会影响资源回收的条件和策略。

  1. 保存配置文件并重启 K3s 服务:
    bash
    sudo systemctl restart k3s

方案2:检查磁盘空间并清理不需要的资源

如果问题仍然存在,你还可以尝试检查节点的磁盘空间,并清理不需要的资源,以释放磁盘空间。你可以使用 df -h 命令来查看磁盘空间的使用情况,并根据需要进行清理操作。

方案3:升级 K3s 版本

有时候问题可能是由于 K3s 版本中的 bug 导致的。你可以考虑升级到最新的 K3s 版本,以获取已知问题的修复和改进。

请注意,K3s 版本升级可能会涉及到一些风险和操作,建议在升级之前做好备份并仔细阅读官方文档。

总结

当出现 “Eviction manager: attempting to reclaim” 错误消息以及 Pod 处于 Pending 状态时,通常是因为节点的资源不足导致的。你可以通过调整 “Eviction manager” 设置、清理磁盘空间或升级 K3s 版本来解决这个问题。在进行任何操作之前,请确保做好备份,并谨慎阅读相关文档。

注意:本文提供的解决方案可能因为版本差异等原因而不适用于所有情况,请根据实际情况进行调整和实施。

正文完