k8s调度和资源管理

813 阅读1分钟

k8s资源模型

pod是k8s调度的基本单元,可以为一个pod设置资源限制。

image.png

在pod调度时,根据requests的值进行调度,而按照limits的值进行资源限制。根据pod中容器的requests和limits值,k8s将pod设置为三个QoS:

  • Guaranteed:requests和limits值必须设置并且相等。
  • Burstable:不符合Guaranteed条件,并且Pod 中至少一个容器设置了内存或 CPU requests。
  • BestEffort:pod中的容器没有设置requests和limits

分为三个QoS级别的目的是当宿主机资源不足的时候,k8s怎么挑选Pod进行删除。优先删除没有对资源进行限制的pod,即删除优先级为BestEffort>Burstable>Guaranteed。

k8s的默认调度器

调度器的工作原理如下:

image.png

Predicates算法
Predicates算法的作用就是从众多的节点上筛选出可以运行pod的节点,可运行满足如下条件:

  • 节点的资源满足pod资源要求
  • pod申请的宿主机端口号未被使用

Priorities算法
Priorities算法的作用就是为筛选出的节点打分,pod将调度到打分最高的节点上。该算法有不同的思想,如下:

  • 可以选择空闲资源最多的宿主机
  • 可以选择使得各种资源分配最均匀的节点,避免一个节点cpu被大量分配,而内存大量剩余的情况