控制器和pod调度流程

在k8s中controllers控制器也叫工作负载,常见的五种工作负载如下:

Deployments | Kubernetes  官网关于workload(控制器)的介绍

一、常见控制器

1、工作负载-ReplicaSet(副本控制器)

  • ReplicaSet用于解决pod的扩容和缩容问题。
  • 通常用于无状态应用

ReplicaSet是kubernetes中的一种副本控制器,主要作用是控制由其管理的pod,使pod副本的数量始终维持在预设的个数。Kubernetes中还有一个类似功能的控制器:Replication Controller。ReplicaSet是Replication Controller

的下一代副本控制器,目前两者只在标签选择器支持的查找方式有区别,ReplicaSet支持等式查找与集合查找两种方式,Replication Controller只支持等式查找。

kubectl命令同时支持ReplicaSet与Replication Controller两种副本控制器,但是kubectl rolling-update只支持Replication Controller类型的副本控制器,也就是说ReplicaSet无法通过kubectl rolling-update命令滚动升级。如果想

要使用rolling-update功能的话,kubernetes官方推荐使用Deployments,并且因为Deployments是声明式的而rolling-update是命令式,所以推荐使用rollout命令实现滚动升级(kubectl管理对象的方式大体上分成两种,一种是命

令式,另一种是声明式,声明式又细分成命令声明式与对角声明式,三种方式不能混用,所以才有此说)。

实现上kubernetes官方推荐不要直接使用ReplicaSet,用Deployments取而代之,Deployments是比ReplicaSet更高级的概念,它会管理ReplicaSet并提供很多其它有用的特性,最重要的是Deployments支持声明式更新,声明式更

好相比于命令式更新的好处是不会丢失历史变更。总结起来就是:不要再直接使用ReplicaSet。 

2、工作负载-Deployment

Kubernetes Deployment提供了官方的用于更新Pod和Replica Set(下一代的ReplicationController)的方法,您可以在Deployment对象中只描述您所期望的理想状态(预期的运行状态),Deployment控制器为您将现在的实际状态转换成您期望的状态;

Deployment集成了上线部署、滚动升级、创建副本、暂停上线任务,恢复上线任务,回滚到以前某一版本(成功/稳定)Deployment等功能,在某种程度上, Deployment可以帮我们实现无人值守的上线,大大降低我们的上线过程的复杂沟通、操作风险。

Deployment的典型用例:
    使用Deployment来启动(上线/部署)一个Pod或者ReplicaSet
    检查一个Deployment是否成功执行
    更新Deployment来重新创建相应的Pods(例如,需要使用一个新的Image)
    如果现有的Deployment不稳定,那么回滚到一个早期的稳定的Deployment版本

3、工作负载-StatefulSet

StatefulSet—有状态应用
用于解决各个pod实例独立生命周期管理,提供各个实例的启动顺序和唯一性
    稳定,唯一的网络标识符。
    稳定,持久存储--StatefulSet:每个pod对应一个pv
    有序的,优雅的部署和扩展。
    有序,优雅的删除和终止。
    有序的自动滚动更新。

4、工作负载-DaemonSet

DaemonSet能够让所有(或者一些特定)的Node节点运行同一个pod。当节点加入到kubernetes集群中, pod会被( DaemonSet)调度到该节点上运行,当节点从kubernetes集群中被移除,被( DaemonSet)调度的pod会被移除,如果删除DaemonSet,所有跟这个DaemonSet相关的pods都会被删除。

在使用kubernetes来运行应用时,很多时候我们需要在一个区域( zone)或者所有Node上运行同一个守护进程( pod),例如如下场景:
    每个Node上运行一个分布式存储的守护进程,例如glusterd, ceph
    运行日志采集器在每个Node上,例如fluentd, logstash
    运行监控的采集端在每个Node,例如prometheus node exporter, collectd等

5、Job

 6、CronJob

执行定时任务

二、pod调度流程

1、流程

2、筛选阶段的筛选规则

 3、优选阶段

 

posted @ 2020-06-15 18:03  凡人半睁眼  阅读(403)  评论(0编辑  收藏  举报