为什么 Kubernetes 对我的节点设置磁盘压力污染?

Vit*_*nov 1 kubernetes kubelet

如何找出设置污点的原因?

这是我从 kubelet 配置中的驱逐配置:

Kubelet 配置:

kubeletArguments:
  eviction-soft:
  - memory.available<100Mi
  - nodefs.available<100Mi
  - nodefs.inodesFree<1%
  - imagefs.available<100Mi
  - imagefs.inodesFree<1%
  eviction-soft-grace-period:
  - memory.available=1m30s
  - nodefs.available=1m30s
  - nodefs.inodesFree=1m30s
  - imagefs.available=1m30s
  - imagefs.inodesFree=1m30s
  eviction-hard:
  - memory.available<100Mi
  - nodefs.available<100Mi
  - nodefs.inodesFree<1%
  - imagefs.available<100Mi
  - imagefs.inodesFree<1%
Run Code Online (Sandbox Code Playgroud)

dh -f输出显示 20GiB 总空间中有 3.8GiB 可用。(>100Mi 配置),因此软驱逐阈值和硬驱逐阈值均未达到。df -i说只使用了 20% 的 inode。

我试图通过发布来找出原因sudo journalctl -u kubelet -b | grep pressure,但没有发现任何有用的东西。也许有人可以建议更好的关键词?

Vit*_*nov 7

解决。事实证明我使用了错误的语法来配置阈值。这是设置这些的正确方法:

evictionSoft:
  memory.available: "100Mi"
  nodefs.available: "100Mi"
  nodefs.inodesFree: "1%"
  imagefs.available: "100Mi"
  imagefs.inodesFree: "1%"
evictionSoftGracePeriod:
  memory.available: 5m
  nodefs.available: 5m
  nodefs.inodesFree: 5m
  imagefs.available: 5m
  imagefs.inodesFree: 5m
evictionHard:
  memory.available: "100Mi"
  nodefs.available: "100Mi"
  nodefs.inodesFree: "1%"
  imagefs.available: "100Mi"
  imagefs.inodesFree: "1%"
Run Code Online (Sandbox Code Playgroud)

(在我的例子中配置文件位于/var/lib/kubelet/config.yaml

然后需要重启kubelet: sudo systemctl restart kubelet

这里有一个有用的命令来获取 kubelet 日志以检查它是否正确启动:journalctl -u kubelet --since "1min ago"