资源预留


2021年10月15日 15:53     admin

修改kubelet启动配置文件

  1. vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf


容量

cpu=1 或 cpu=1000m

  1. 注意:1000m=1

memory=516Mi / ephemeral-storage==1Gi

  1. 注意:MiMb,GiGb,KiKb

参数

kube-reserved

  1. --kube-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi

  1. #指定为k8s系统组件(kubelet、kube-proxy、dockerd等)预留的资源量,如:--kube-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi。
  2. #这里需要注意一点的是这里的kube-reserved只为非pod形式启动的kube组件预留资源,假如组件要是以static pod形式启动的,那并不在这个kube-reserved管理并限制的cgroup中,而是在kubepod这个cgroup中

system-reserved

  1. --system-reserved=cpu=500m,memory=1Gi,ephemeral-storage=1Gi

  1. #为系统守护进程(sshd, udev等)预留的资源量,如:--system-reserved=cpu=500m,memory=1Gi,ephemeral-storage=1Gi。注意,除了考虑为系统进程预留的量之外,还应该为kernel和用户登录会话预留一些内存。

软阀值、硬阀值

  1. nodefs 机器文件系统
  2. imagesfs: Kubelet 能够利用 cAdvisor 自动发现这些文件系统,镜像存储空间
  3. 示例:
  4. memory.available<10%
  5. memory.available<1Gi

eviction-hard

  1. --eviction-hard=memory.available<5%,nodefs.available<10%,imagefs.available<10%

  1. 驱逐pod的配置:硬阈值
  2. 含义:设置进行pod驱逐的阈值,这个参数只支持内存和磁盘。
  3. 通过--eviction-hard标志预留一些内存后,当节点上的可用内存降至保留值以下时,kubelet 将会对pod进行驱逐。

eviction-soft与eviction-soft-grace-period

  1. #配置 驱逐pod的软阈值
  2. --eviction-soft=memory.available<10%,nodefs.available<15%,imagefs.available<15%
  3. #定义达到软阈值之后,持续时间超过多久才进行驱逐
  4. --eviction-soft-grace-period=memory.available=2m,nodefs.available=2m,imagefs.available=2m

重启生效

  1. systemctl daemon-reload
  2. systemctl restart kubelet

查看验证

  1. kubectl describe node <节点名称>


  1. 计算公式:节点上可配置值 = 总量 - 预留值 - 驱逐阈值
  2. Allocatable = Capacity - Reserved(kube+system) - Eviction Threshold