Kubernetes 手记(7)- 控制器配置清单
七 控制器配置清单
7.1 ReplicaSet 控制器
详见:kubectl explain replicaset
清单规范
7.1.1 replicaset.spec 规范
replicas 副本数量,指定一个数字
selector 标签选择器,可以使用 matchLabels、matchExpressions 两种类型的选择器来选中目标 POD
template 模板,这里面定义的就是一个 POD 对象,这个对象只包含了 pod.metadata 和 pod.spec 两部分。
7.1.2 清单示例
7.2 Deployment 控制器
Deployment 通过控制 ReplicaSet 来实现功能,除了支持 ReplicaSet 的扩缩容意外,还支持滚动更新和回滚等,还提供了声明式的配置,这个是我们日常使用最多的控制器。它是用来管理无状态的应用。
Deployment 在滚动更新时候,通过控制多个 ReplicaSet 来实现,ReplicaSet 又控制多个 POD,多个 ReplicaSet 相当于多个应用的版本。
清单规范,详见:kubectl explain deployment
7.2.1 replicaset.spec 对象规范
replicas 副本数量,指定一个数字
selector 标签选择器,可以使用 matchLabels、matchExpressions 两种类型的选择器来选中目标 POD
template 模板,这里面定义的就是一个 POD 对象,这个对象只包含了 pod.metadata 和 pod.spec 两部分。
strategy 更新策略,支持滚动更新、支持滚动更新的更新方式
Recreate:替换更新会先删除旧的容器组,在创建新的容器组,升级过程中业务会中断
RollingUpdate:滚动更新将逐步用新版本的实例替代旧版本的实例,升级过程中,业务流量会同时负载到新旧两个版本的 POD 上,因此业务不会中断。
revisionHistoryLimit 滚动更新后最多保存多少个更新的历史版本,值为一个数字
paused 当更新启动后控制是否暂停
7.2.2 清单示例
7.2.3 关于更新
直接修改清单文件,kubectl apply -f deployment.yaml
使用 kubectl patch 使用 json 格式给出更新的内容
仅更新镜像 kubectl set image
7.2.4 模拟金丝雀发布
在更新刚刚启动的时候,将更新过程暂停,那么只能更新一个,这实现了在集群中增加一个金丝雀版本
查看已经被更新中被暂停的控制器状态,可以看到一直处于暂停状态的 deployment
如果金丝雀没有问题,那么继续可以使用继续更新的命令
7.2.5 更新策略
最大不可用为 0 ,更新时候可以临时超出 1 个
7.2.6 关于回滚
rollout undo 是回滚的命令,默认滚回上一版本
查看可以回滚的版本
rollout undo 指定回滚的版本
查看当前的工作版本
7.3 DaemonSet 控制器
清单规范,详见 kubectl explain daemonset
7.3.1 DaemonSet.spec 规范
此处只列举不同之处
updateStrategy 更新策略,支持滚动更新、支持滚动更新的更新方式,默认滚动更新每个 node
7.3.2 清单示例
7.3.3 关于更新
更新 filebeat-daemonset 这个 daemonset 控制器下的 filebeat 容器的镜像
其他
自己将手记发在:https://github.com/redhatxl/awesome-kubernetes-notes欢迎一键三连
版权声明: 本文为 InfoQ 作者【雪雷】的原创文章。
原文链接:【http://xie.infoq.cn/article/b9a7c2d71d36df75766f0e49c】。文章转载请联系作者。
评论