Kubernetes中资源调度
指pod应该按照什么样的策略分配到哪个Node上。
涉及到两个策略:Predicates、Priorities
- Predicates:过滤和选择满足硬性条件的Node
- Prevent overcommit:比如一台机器上只有10个cpu,我们不希望往这个机器上分配一个需要10+cpu的pod上来。
- Prevent co-scheduling(pod anti-affinity):affinity亲和力的意思,anti-affinity是说我们不希望两个容易产生冲突的pod放到一个Node上;
- Force co-scheduling(pod affinity):我们希望两个有通信关系的pod放到一个node上。
- Dedicate Nodes(Taints):Taints污点的意思,通过Toleration和Taint限制pod能放到什么样的node上,不能放到什么样的node上。
- Priorities:对符合条件的多个node打分,选择把pod放到分数高的node上。(打分机制如selector Spreading、node affinity等,最后进行linear combination)
Kubernetes资源管理
涉及到两个概念,Resource Quota、Reschedudler
Resource Quota:为每一个组分配固定的quota,默认情况下Quota是静态的,比如说一台机器共有100个cpu,一个task分配了50cpu,那么该机器另外50个cpu是不能供该task使用的;另一种方式是动态分配资源,比如有两个task,两个quota分别指定给60个cpu,但是机器上一共有100个cpu,那么这两个任务在运行的时候会抢占机器cpu,假如一个task抢到了60个cpu,则另一个task只能占到40个cpu。
Rescheduler这个不太懂耶!
推荐一下一位运维师傅的文章吧,希望能有所启发。Kubernetes 资源管理概述