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

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

Replicaset

namespace下的副本数

标签被破坏时

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

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

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

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

将副本数量改成六个

不删除之前创建的pod,直接创建

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


deployment控制器

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

名字忘改了,不影响

两种控制器间的关系:

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

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

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

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

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

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


滚动更新策略

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

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

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


暂停和恢复

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

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

更新镜像和修改资源并没有出发更新

恢复

修改好后一个一个上线

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐