【问题标题】:Kubernetes does not evict nodes despite limit being set尽管设置了限制,Kubernetes 不会驱逐节点
【发布时间】:2018-12-06 02:10:22
【问题描述】:

我更改了 kops 设置的默认驱逐策略以包含条件 memory.available<1Gi--eviction-hard 标志现在设置为:

memory.available<1Gi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5%

现在一个节点上的可用内存为 400Mb,并且已经有很长一段时间了。没有发生 pod 驱逐。

为什么 kubelet 不驱逐 pod 以腾出空间?其他节点上还有很多空间。

驱逐条件之间是否有AND?如何查看 kubelet 看到的内存使用情况?

【问题讨论】:

  • 尝试运行这个script,它重现了kubelet计算memory.available所执行的同一组步骤
  • 该脚本显示大约 2 gig 的可用 RAM,而 htop 显示大约 800mb 的可用内存。是否需要进行一些与配置相关的更改才能让 kubectl 读取 htop 正在读取的内容?
  • 在 Kubernetes 配置中没有这样的机会来改变它。但是在这种情况下使用 htop 并不是一个好主意,因为它用缓存来计算内存

标签: kubernetes


【解决方案1】:

您的 pod 可能将服务质量等级设置为 Guaranteed,这可能是它们没有被驱逐的原因。

见: https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/#qos-classes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 2022-08-17
    • 2020-12-12
    • 1970-01-01
    • 2019-06-15
    • 2019-03-17
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多