kubelet镜像回收与容器回收修改

一、kubelet镜像回收与容器回收

kubelet默认的镜像垃圾回收:
image-gc-high-threshold,触发镜像垃圾回收的磁盘使用率百分比。默认值为 85%。                     #imageGCHighThresholdPercent
image-gc-low-threshold,镜像垃圾回收试图释放资源后达到的磁盘使用率百分比。默认值为 80%。 #imageGCLowThresholdPercent

官方文档:https://kubernetes.io/zh/docs/concepts/cluster-administration/kubelet-garbage-collection/

二、当工作节点资源不足时的情况

1、当磁盘使用率不足时

1.1 当磁盘使用率大于79%时,pod就不会调度到该节点上了。

1.2 磁盘使用率大于80%时,有些pod就会被驱逐了,同时新的pod不会被调度到该节点上

1.3 驱逐策略:

kubelet 首先根据他们对短缺资源的使用是否超过请求来排除 pod 的驱逐行为, 然后通过优先级, 然后通过相对于 pod 的调度请求消耗急需的计算资源。

kubelet 按以下顺序对要驱逐的 pod 排名:

  • BestEffort 或 Burstable,其对短缺资源的使用超过了其请求,此类 pod 按优先级排序,然后使用高于请求。
  • Guaranteed pod 和 Burstable pod,其使用率低于请求,最后被驱逐。 Guaranteed Pod 只有为所有的容器指定了要求和限制并且它们相等时才能得到保证。 由于另一个 Pod 的资源消耗,这些 Pod 保证永远不会被驱逐。 如果系统守护进程(例如 kubeletdocker、和 journald)消耗的资源多于通过 system-reserved 或 kube-reserved 分配保留的资源,并且该节点只有 Guaranteed 或 Burstable Pod 使用少于剩余的请求,然后节点必须选择驱逐这样的 Pod 以保持节点的稳定性并限制意外消耗对其他 pod 的影响。 在这种情况下,它将首先驱逐优先级最低的 pod。

必要时,kubelet会在遇到 DiskPressure 时逐个驱逐 Pod 来回收磁盘空间。 如果 kubelet 响应 inode 短缺,它会首先驱逐服务质量最低的 Pod 来回收 inodes。 如果 kubelet 响应缺少可用磁盘,它会将 Pod 排在服务质量范围内,该服务会消耗大量的磁盘并首先结束这些磁盘。

三、修改测试(kubeadm安装的环境)

1、手动修改kubelet配置,更改回收策略,当磁盘达到60%时,就触发镜像垃圾回收

[root@node1 ~]# ll  /var/lib/kubelet/config.yaml 
-rw-r--r-- 1 root root 905 Sep 24 11:10 /var/lib/kubelet/config.yaml
[root@node1 ~]# tail -5   /var/lib/kubelet/config.yaml 
streamingConnectionIdleTimeout: 0s
syncFrequency: 0s
volumeStatsAggPeriod: 0s
imageGCHighThresholdPercent: 60   #触发镜像垃圾回收的磁盘使用率百分比
imageGCLowThresholdPercent: 50    #镜像垃圾回收试图释放资源后达到的磁盘使用率百分比

  

2、重启kubelet

systemctl  restart   kubelet

  

原文地址:https://www.cnblogs.com/zhangb8042/p/15329684.html