K8S原理剖析:调度器原理剖析和实践

不念不忘少年蓝@ 2023-06-26 12:20 125阅读 0赞

大纲

  • K8S调度机制介绍
  • K8S中的调度策略与算法
  • K8S高级调度特性详解

K8S调度机制介绍

Scheduler:为Pod找到一个合适的Node

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 1

Kubernetes的Default scheduler

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 2

从外部流程看调度器

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 3

调度器的内部流程

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 4

  1. 通过NodeLister获取所有节点信息;
  2. 整合scheduled pods和assume pods,合并到pods,作为所有已调度Pod信息;
  3. 从pods中整理出node-pods的对应关系表nodeNameToInfo;
  4. 过滤掉不合适的节点;
  5. 给剩下的节点依次打分;
  6. 在分数最高的nodes中随机选择一个节点用于绑定。这是为了避免分数最高的节点被几次调度撞车。

K8S中的调度策略与算法

K8S中的调度策略与算法

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 5

通过Predicate策略筛选符合条件的Node

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 6

典型Predicate算法








































算法名称 功能
GeneralPredicates 包含3项基本检查: 节点、端口和规则
NoDiskConflict 检查Node是否可以满足Pod对硬盘的需求
NoVolumeZoneConflict 单集群跨AZ部署时,检查node所在的zone是否能满足Pod对硬盘的需求
MaxEBSVolumeCount 部署在AWS时,检查node是否挂载了太多EBS卷
MaxGCEPDVolumeCount 部署在GCE时,检查node是否挂载了太多PD卷
PodToleratesNodeTaints 检查Pod是否能够容忍node上所有的taints
CheckNodeMemoryPressure 当Pod QoS为besteffort时,检查node剩余内存量, 排除内存压力过大的node
MatchInterPodAffinity 检查node是否满足pod的亲和性、反亲和性需求

通过Priority策略给剩余的Node评分,挑选最优的节点

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 7

典型Priority算法
































算法名称 功能
LeastRequestedPriority 按node计算资源(CPU/MEM)剩余量排序,挑选最空闲的node
BalancedResourceAllocation 补充LeastRequestedPriority,在cpu和mem的剩余量取平衡
SelectorSpreadPriority 同一个Service/RC下的Pod尽可能的分散在集群中。 Node上运行的同个Service/RC下的
Pod数目越少,分数越高。
NodeAffinityPriority 按soft(preferred) NodeAffinity规则匹配情况排序,规则命中越多,分数越高
TaintTolerationPriority 按pod tolerations与node taints的匹配情况排序,越多的taints不匹配,分数越低
InterPodAffinityPriority 按soft(preferred) Pod Affinity/Anti-Affinity规则匹配情况排序,规则命中越多,分数越高
/低

K8S高级调度特性详解

K8S中的Label与Selector

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 8

Node Affinity 让Pod在一组指定的Node上运行

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 9

Pod Affinity 让Pod与指定Service的一组Pod在相同Node上运行

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 10

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 11

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 12

Pod Anti-Affinity 让同一个Service的Pod分在到不同Node上运行

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 13

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 14

Pod Anti-Affinity具有对称性

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 15

Taints-tolerations 来自Node的反亲和配置

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 16

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 17

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 18

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 19

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ_size_16_color_FFFFFF_t_70 20

发表评论

表情:
评论列表 (有 0 条评论,125人围观)

还没有评论,来说两句吧...

相关阅读