kubernetes实践之三十八:Pod调度

一: Deployment/RC: 全自动调度
Deployment或RC的主要功能之一就是自动部署一个容器应用的多份副本,以及持续监控副本的数量,在集群内始终维持用户指定的副本数量。

二: NodeSelector: 定向调度
可以通过Node的标签(Label)和Pod的nodeSelector属性匹配,将Pod调度到指定节点。

三: NodeAffinity: 亲和性调度
用于替换NodeSelector的全新调度策略,目前有两种节点亲和性表达。
1. RequiredDuringSchedulingIgnoredDuringExecution: 必须满足指定的规则才可以调度Pod到Node上,相当于硬限制。
2. PreferredDuringSchedulingIgnoredDuringExecution: 强调优先满足指定规则,调度器会尝试调度Pod到Node上,但并不强求,相当于软限制。多个优先级规则还可以设置权重值,以定义执行的先后顺序。

如果同时定义了nodeSelector和nodeAffinity,那么必须两个条件都得到满足,Pod才能最终运行在指定的Node上。

四:PodAffinity: 亲和与互斥调度策略

五: Taints和Tolerations(污点和容忍)
Taint需要和Toleration配合使用,让Pod避开那些不适合的Node. 在Node上设置一个或多个Taint之后,除非Pod明确生命能够容忍这些“污点”,否则无法在这些Node上运行。Toleration是Pod的属性,让Pod能够运行在标注了Taint的Node上。

六: DaemonSet: 在每个Node上调度一个Pod

七: Job批处理调度
1.Job Template Expansion模式:一个Job对象对应一个待处理的Work item,有几个Work item就产生几个独立的Job,通常适合Work item 数量少,每个Work item处理的数据量比较大的场景。

2.Queue with Pod Per Work Item模式:采用一个任务队列存放Work item,一个Job对象作为消费者去完成这些Work item,在这种模式下,Job会启动N个Pod,每个Pod对应一个Work item.

3.Queue with Variable Pod Count 模式:也是采用一个任务队列存放Work item,一个Job对象作为消费者去完成这些Work item,但与上面的模式不同,Job启动的Pod数量是可变的。

八: Cronjob: 定时任务
类似于Linux Cron的定时任务Cron Job.

九: 自定义调度
本文标题:kubernetes实践之三十八:Pod调度
网站链接:http://cdiso.cn/article/jphdii.html

其他资讯