首页 > kubernetes(k8s) > kubernetes之资源控制器ReplicaSet,Deployment
2019
07-26

kubernetes之资源控制器ReplicaSet,Deployment

deployment通过ReplicaSets(RS)创建Pod

Rs演示:(创建一个Rs)

验证理论:kubernetes 很多时候副本数都是通过标签来维护的

更改第一个容器的标签试试

错误:说这个容器已经有了标签,如果想要覆盖原有的标签值,需要加 –overwrite=true

查看

我们发现多出了一个frontend容器,加上刚才更改掉标签那个共计4个,这是因为ReplicaSets(RS)是通过标签来维护副本数的,当他发现副本数不足3个就会再启动一个frontend标签的容器。

验证完毕(kubernetes 很多时候副本数都是通过标签来维护的)

删除

如果现在我们删除掉这个rs 结果会如何呢,当然标签是frontend的都会被删掉,我们更改掉标签那个会留下来,不会被回收

只剩这一个了

deployment演示:

(创建一个deployment) deployment是一个声明式的方法,可以使用apply去创建

创建deployment同时deployment也会创建响应的RS(replicaSets),然后replicaSets再去创建相应的Pod

所以

deployment扩容

我更新副本数,你可以查看他的rs名称是没有任何变化的,这就说明,他的模板不会被更新,也就不会出现回退这些现象

deployment更新镜像

先登录当前容器查看当前nginx版本

可以看到当前nginx容器版本是1.17.8 (这是当前最新版的nginx)

那就执行更新到 1.16.1 试试

这个更新比较慢,可能跟我网速有关系,半天了只更新成功了一个

我们可以观察rs 列表的变化

上面我更新了2次,有没有发现rs多出2个旧版本Pod,每更新一次就会残留一个上个版本的ReplicaSet 的Pod,这个有什么用呢,当你回滚到上个版本的时候他就有用了。

已经全部更新成功

查看副本更新状态

deployment回滚镜像

回滚到上一个版本,那么nginx的版本就会变成1.17.8

验证

回滚后版本号为 1.17.8 无问题 是上一个版本

查看回滚历史

回滚到指定版本

暂停deployment正在进行的更新

验证

例如我要回滚到版本 5

可以看到暂停后 有7个容器已经回滚到了 1.16.1 还有3个容器在上个版本没有

继续deployment刚在暂停的更新

自动继续回滚到指定版本,并且完成

deployment设置自动扩展

如果集群支持 horizontal pod autoscaling 的话,还可以为Deployment设置自动扩展

其他补充内容

deployment更新策略

查看deployment状态

Rollover(多个rollout并行)

回退 Deployment

您可以用 kubectl rollout status 命令查看 Deployment 是否完成。如果 rollout 成功完成, kubectl rollout status 将返回一个0值的 Exit Code

清理 Policy

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。