文章

k3s中控制evicted pods数量

1. 问题

当节点出现资源压力时,kubernetes会自动驱赶pod,被驱赶的pod会被打上evicted标记,但并不马上回收。触发回收的阈值默认是12500,导致节点上出现大量无效的pod,资源正常以后也需要很长时间进行恢复。

2. 解决方案

2.1. 批量删除evicted pods的方法

# 在主节点上执行
kubectl get pods -n <namespace> | grep -i evicted | awk '{print $1}' | xargs kubectl delete pod -f -n <namespace>

2.2. 修改pod回收阈值

  • 在k3s主节点修改或新建配置文件:/etc/rancher/k3s/config.yaml

  • 设置下面的参数

kube-controller-manager-arg:
  - 'terminated-pod-gc-threshold=10'
  • 重启k3s集群

应该是所有节点都需要重启,暂未验证。

License:  CC BY 4.0