K3s的kubelet参数设置 eviction-hard

在k3s中,kubelet是作为一个子进程内建的。 这也导致,在k3s中,无法像在k8s中一样,直接对kubelet的参数进行修改。

为解决这一问题,k3s server提供了众多的flag,用于对k3s中的子进程进行配置。对于kubelet的配置,可以使用--kubelet-arg value

以kubelet的eviction-hard参数为例,启动server时,添加相应的flag

k3s server --kubelet-arg "eviction-hard=memory.available<5%,nodefs.available<25%"

对于已经部署好的集群,可以使用配置文件的方式实现。

① 在需要的节点(master或agent)创建配置文件。

[root@localhost ~]# touch /etc/rancher/k3s/config.yaml

② 修改配置文件内容

kubelet-arg:    - "eviction-hard=memory.available<5%,nodefs.available<25%"

修改后重启节点。

环境信息:
K3s 版本:1.22

节点 CPU 架构、操作系统和版本:x84_64

集群配置:

image

复现步骤:

3个节点的物理内存分别为,m1:8G,n1:32G,n2:32G。
eviction-hard参数的内存上限分别设置为m1:5%,n1:5%,n2:20%。
重启集群后,3个节点的可用内存情况如下图所示:
image

验证:在本测试中,只设置了eviction-hard参数的情况下,和下图所示的k8s节点可分配资源说明,是匹配的,说明kubelet的参数设置成功。
image

注意:在进行eviction-hard参数的设置时,建议不要把上限设置为当前节点可以触发eviction的情况,我出现了无法调度的状况。
image

参考文档Node Pressure Eviction threshold · Issue #5213 · k3s-io/k3s · GitHub
https://docs.k3s.io/cli/server#customized-flags-for-kubernetes-processes

附加上下文/日志:

日志


1 个赞