让k8s健康运行需预留部分资源,以防宕机
,默认情况下k8s将会把资源耗尽
Allocatable 被定义为 pod 可用计算资源量。调度器不会超额申请 Allocatable。目前支持 CPU, memory 和 storage 这几个参数。
- Allocatable:真正scheduler调度Pod时的参考值(保证Node上所有Pods的request resource不超过Allocatable)
- kube-reserved:给kube组件预留的资源:kubelet,kube-proxy以及docker等
- system-reserved:给system进程预留的资源
- eviction-threshold:kubelet eviction的阈值设定
计算公式:节点上可配置值 = 总量 - 预留值 - 驱逐阈值
Allocatable = Capacity - Reserved(kube+system) - Eviction Threshold
修改前的 Allocatable
Allocatable:
cpu: 8
ephemeral-storage: 43584163359
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 3892812Ki
pods: 110
编辑 vim /var/lib/kubelet/config.yaml 最后添加如下参数
enforceNodeAllocatable:
kubeReserved:
memory: 1Gi
cpu: 1000m
重启生效
systemctl restart kubelet.service
Allocatable的参数都小了一点CPU少了一个
官网
https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/
官网参考.