k8s 集群5-控制器

通过 写yaml文件 把信息全部存到etcd 里,然后控制器会通过api server 访问 etcd 时刻检索出来 并且获取当前应用的状态 会不断比对当前状态和期望状态

Pod 的分类:
自主式 Pod: Pod 退出后不会被创建
控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目
控制器类型:
Replication ControllerReplicaSetDeployment
DaemonSet
StatefulSet
Job
CronJob
HPA全称Horizontal Pod Autoscaler

Replication Controller和ReplicaSet
ReplicaSet 是下一代的 Replication Controller,官方推荐使用ReplicaSet.ReplicaSet 和 Replication Controller 的唯一区别是选择器的支持,ReplicaSet 支持
新的基于集合的选择器需求。ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行虽然 ReplicaSets 可以独立使用,但今天它主要被Deployments 用作协调 Pod 创建删除和更新的机制。
Deployment
Deployment 为 Pod 和 ReplicaSet 提供了一个申明式的定义方法典型的应用场景:
用来创建Pod和ReplicaSet
滚动更新和回滚
扩容和缩容
暂停与恢复

==================================================================

replicaset

k8s 集群5-控制器_第1张图片

k8s 集群5-控制器_第2张图片

k8s 集群5-控制器_第3张图片

控制器是如何通过pod 来控制副本数的?

通过控制器标签来选择pod,控制器创建的每个pod 都有相应的标签,通过标签来捆绑pod

 如何判断副本数够不够,就扫描当前 namespace 下pod 的副本数k8s 集群5-控制器_第4张图片

k8s 集群5-控制器_第5张图片k8s 集群5-控制器_第6张图片

如果破坏了标签

k8s 集群5-控制器_第7张图片

这是因为控制器是通过标签来进行匹配的,pod标签一旦被更改,这个pod 就不属于控制器来管理,所以就会重建一个标签

当把pod 标签改回来

这时候 刚才新建的pod 又被删掉了

k8s 集群5-控制器_第8张图片

副本数始终会和定义的副本数保持一致 这就是控制器的作用

定义的副本数 已经写到了etcd 里,整个信息已经持久化到了etcd 里面,这个控制器会不断地到etcd里获取变更,不断地和当前的状态和etcd里的状态做比对,如果不对,代码自驱动完成

如果删掉 也会自动创建 创建出来的标签和pod 都是一致的

k8s 集群5-控制器_第9张图片

当把副本数改为6时

k8s 集群5-控制器_第10张图片

不用删除之前的 直接创建

k8s 集群5-控制器_第11张图片

如果是控制器维护的pod ,删它的话 是没有用的,因为控制器会自动把它拉起来

如果想删 直接删控制器

k8s 集群5-控制器_第12张图片

当删除控制器的话 pod 也会被全部删掉

k8s 集群5-控制器_第13张图片

========================================================

deployment 控制器

典型特点是版本的迭代更新

k8s 集群5-控制器_第14张图片

k8s 集群5-控制器_第15张图片

k8s 集群5-控制器_第16张图片

它们之间的关系是什么呢

k8s 集群5-控制器_第17张图片

pod 是由rs创建的 rs 是由deployment控制器创建的 

rs 对于deployment 而言 就是一个版本

k8s 集群5-控制器_第18张图片k8s 集群5-控制器_第19张图片k8s 集群5-控制器_第20张图片

首先由deployment来创建rs 再由rs 创建副本数,当我们要升级的时候,deploymen会新建一个rs ,原来的rs 不用了 ,rs会把之前的pod (副本) 回收,然后再由新的rs 再把pod (副本)重建出来

之前的pod 没有删掉就是为了防止回滚

k8s 集群5-控制器_第21张图片

k8s 集群5-控制器_第22张图片

此时 又回到了v1

Deployment 可确保在更新时仅关闭一定数量的 Pod。默认情况下,它确保至少所需 Pod 的 75% 处于运行状态(最大不可用比例为 25%)。
Deployment 还确保仅所创建 Pod 数量只可能比期望 Pod 数高一点点。 默认情况下,它可确保启动的 Pod 个数比期望个数最多多出 125%(最大峰值 25%)

================================

滚动更新策略

k8s 集群5-控制器_第23张图片

这样 始终可用的副本数都是3个

k8s 集群5-控制器_第24张图片

先把上面的策略先运行了 然后修改镜像

k8s 集群5-控制器_第25张图片

k8s 集群5-控制器_第26张图片k8s 集群5-控制器_第27张图片

=====================================

暂停 

避免触发不必要的线上更新

k8s 集群5-控制器_第28张图片

k8s 集群5-控制器_第29张图片

暂停之后 副本不会有影响

k8s 集群5-控制器_第30张图片

但是更新镜像和修改资源并没有触发更新

k8s 集群5-控制器_第31张图片

==========

恢复

k8s 集群5-控制器_第32张图片

k8s 集群5-控制器_第33张图片

等修改好了之后 一次性上线

回收

k8s 集群5-控制器_第34张图片

你可能感兴趣的:(kubernetes,容器,云原生)