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个
在运行完以上策略后进行修改镜像:
每间隔五秒会一个一个的进行更新
暂停和恢复
作用:为了避免触发不必要的线上更新
暂停后,副本不会受到影响
更新镜像和修改资源并没有出发更新
恢复
修改好后一个一个上线