k8s-deployment控制器 5

K8s控制器是Kubernetes(简称k8s)系统中一个重要的组成部分,它是一个管理Pod的中间层,可以创建和管理多个Pod副本,确保它们按照预定的数量和行为进行运行。

通过编写yaml文件将信息全部存到etcd中,控制器通过label-selector与Pod相关联,它会自动创建相应的Pod资源,并在Pod发生故障时按照策略进行重新编排。控制器可以实现对Pod的管理,比如启动、停止、扩展Pod的数量等等。

k8s-deployment控制器 5_第1张图片k8s-deployment控制器 5_第2张图片

Replicaset

k8s-deployment控制器 5_第3张图片k8s-deployment控制器 5_第4张图片k8s-deployment控制器 5_第5张图片

namespace下的副本数

k8s-deployment控制器 5_第6张图片k8s-deployment控制器 5_第7张图片k8s-deployment控制器 5_第8张图片

标签被破坏时

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

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

当将pod标签修改回来后,刚才新建的pod又会将被删除

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

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

定义的副本数量已经写到了etcd 里,整个信息已经持久化到了etcd 里面,该控制器会不断地到etcd里获取变更,不断地和当前的状态和etcd里的设定的状态做比对,如果有差异,代码将会自驱动完成更新;即使对其进行删除,也会自动创建,所创建出来的标签和之前的pod保持一致。

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

将副本数量改成六个

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

不删除之前创建的pod,直接创建k8s-deployment控制器 5_第13张图片

控制器维护创建的pod无法对其进行直接删除,控制器会自动将其重新拉起;需要直接删除控制器,不过此种做法,创建的所有pod会一并被删除

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


deployment控制器

该控制器典型的特点是版本的迭代更新

k8s-deployment控制器 5_第15张图片k8s-deployment控制器 5_第16张图片

名字忘改了,不影响

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

两种控制器间的关系:

k8s-deployment控制器 5_第18张图片

pod是由rs进行创建的,而rs又是由deployment控制器进行创建的;

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

k8s-deployment控制器 5_第19张图片k8s-deployment控制器 5_第20张图片

创建新版本的方式:首先由feployment来创建rs,再由rs来创建设定数量的副本,当要进行升级时,deployment会新建一个rs,停用掉之前的rs,rs会将之前创建的pos副本回收,然后再由新的rs将pod副本重新创建出来

不删除之前的pod是为了便利pod副本回滚

k8s-deployment控制器 5_第21张图片k8s-deployment控制器 5_第22张图片

Deployment控制器可确保在更新仅需要关闭一定数量的pod,不需要全部删除;默认情况下,它确保至少所需75%的pod处于运行状态,也就是说最大不可用pod在25%。

Deployment控制器还确保了pod数量只可能比期望的pod数量高一点点。默认情况下,它可以确保启动的pod数量比期望的pod数量多出25%(最大峰值)。


滚动更新策略

k8s-deployment控制器 5_第23张图片k8s-deployment控制器 5_第24张图片

保证始终可用的副本数量为3个

在运行完以上策略后进行修改镜像:

k8s-deployment控制器 5_第25张图片k8s-deployment控制器 5_第26张图片

每间隔五秒会一个一个的进行更新


暂停和恢复

作用:为了避免触发不必要的线上更新

暂停后,副本不会受到影响

k8s-deployment控制器 5_第27张图片k8s-deployment控制器 5_第28张图片

更新镜像和修改资源并没有出发更新k8s-deployment控制器 5_第29张图片

恢复

k8s-deployment控制器 5_第30张图片k8s-deployment控制器 5_第31张图片

修改好后一个一个上线

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

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