k8s-调度器、预选策略及优选函数-二十

一、简介

master上运行着三个最核心的组件,apiserver、scheduler、controller manager。此外,master还依赖于ectd存储节点,最好ectd是有冗余能力的集群;

(1)调度器(scheduler)

  • master上的scheduler控制着pod运行在哪个node上,默认用的default scheduler;
  • 调度器的调度信息存储在master上的etcd里面,apiserver负责和etcd通信;
  • kubelete运行在node节点上,监控着Node节点上的pod状态,并参与pod的创建等工作;
  • kube-proxy也运行在node节点上,它监控着service资源的变动;
  • kubelete和kube-proxy都要连接master上的apiserver去获取定义信息;

(2)预选步骤

a、default scheduler是通过三个步骤来实现调度的:

  • 预选策略(predicate):先排除那些完全不符合此pod运行法则的节点,有两个维度来排除,一个是最低资源需求,即节点必须满足此Pod的最低资源;第二个是资源限额,即当前节点最多能给pod提供的资源;
  • 优选(priority):在符合节点找到最佳匹配的节点;
  • 绑定(select):把pod绑定到优选的节点上,如果有多个最佳节点,就会随机选一个;

b、kubernetes的调度方式

  • nodeaffinity,表示node亲和性调度,表示这个pod对这个节点有一定的倾向性。我们通过上面的nodeselector来完成这类调度;
  • podaffinity或podunaffinity:pod亲和性或者pod反亲和性调度,有时我们期望某些Pod运行在同一个节点上或者是相邻的节点上,或者我们期望某些Pod不要运行在某些节点上;
  • taints和tolerations:污点和污点容忍调度:可以在某些节点上打上污点,表示这些节点不让pod在其上面运行。taints是定义在节点之上的,tolerations是定义在pod之上的;

猜你喜欢

转载自www.cnblogs.com/weiyiming007/p/10560518.html