Descheduler
kube-scheduler 简介 https://www.jianshu.com/p/68e041c5994b
kube-scheduler 是 Kubernetes 集群的默认调度器,并且是集群 控制面 的一部分。
k8s 节点可分配资源限制 Node Allocatable
https://www.jianshu.com/p/703c3ad4991f
#tke 查看kubel 关于node预留资源配置
cat /etc/kubernetes/kubelet | grep cpu
KUBE_RESERVED="--kube-reserved=cpu=110m,memory=1830Mi"
qos策略
https://blog.csdn.net/weixin_44729138/article/details/112602635
QoS级别决定了kubernetes处理这些POD的方式,我们以内存资源为例:
1、当NODE节点上内存资源不够的时候,QoS级别是BestEffort的POD会最先被kill掉;当NODE节点上内存资源充足的时候,QoS级别是BestEffort的POD可以使用NODE节点上剩余的所有内存资源。
2、当NODE节点上内存资源不够的时候,如果QoS级别是BestEffort的POD已经都被kill掉了,那么会查找QoS级别是Burstable的POD,并且这些POD使用的内存已经超出了requests设置的内存值,这些被找到的POD会被kill掉;当NODE节点上内存资源充足的时候,QoS级别是Burstable的POD会按照requests和limits的设置来使用。
3、当NODE节点上内存资源不够的时候,如果QoS级别是BestEffort和Burstable的POD都已经被kill掉了,那么会查找QoS级别是Guaranteed的POD,并且这些POD使用的内存已经超出了limits设置的内存值,这些被找到的POD会被kill掉;当NODE节点上内存资源充足的时候,QoS级别是Burstable的POD会按照requests和limits的设置来使用。
从容器的角度出发,为了限制容器使用的CPU和内存,是通过cgroup来实现的,目前kubernetes的QoS只能管理CPU和内存,所以kubernetes现在也是通过对cgroup的配置来实现QoS管理的。
————————————————
版权声明:本文为CSDN博主「最美dee时光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44729138/article/details/112602635
驱逐:
https://www.cnblogs.com/yaohong/p/13245723.html
软驱逐和硬驱逐
如果一个节点有10Gi内存,我们希望在内存不足1Gi时候进行驱逐,可以用下面两种方式进行定位驱逐阈值:
memory.available<10%
memory.available<1Gi
1.软驱逐(Soft Eviction):配合驱逐宽限期(eviction-soft-grace-period和eviction-max-pod-grace-period)一起使用。系统资源达到软驱逐阈值并在超过宽限期之后才会执行驱逐动作。
–eviction-soft:描述驱逐阈值,例如:memory.available<1.5G
–eviction-soft-grace-period:驱逐宽限期,memory.available=1m30s
–eviction-max-pod-grace-period:终止pod最大宽限时间,单位s
2.硬驱逐(Hard Eviction ):系统资源达到硬驱逐阈值时立即执行驱逐动作。
这些驱逐阈值可以使用百分比,也可以使用绝对值,如:
–eviction-hard=memory.available<500Mi,nodefs.available<1Gi,imagefs.available<100Gi
–eviction-minimum-reclaim=“memory.available=0Mi,nodefs.available=500Mi,imagefs.available=2Gi”`
–system-reserved=memory=1.5Gi