一、Deployment控制器
Deployment对象,顾名思义,是用于部署应用的对象。它使Kubernetes中最常用的一个对象,它为ReplicaSet和Pod的创建提供了一种声明式的定义方法,从而无需像前两篇文章中那样手动创建ReplicaSet和Pod对象(使用Deployment而不直接创建ReplicaSet是因为Deployment对象拥有许多ReplicaSet没有的特性,例如滚动升级和回滚)。
通过Deployment对象,你可以轻松的做到以下事情:
创建ReplicaSet和Pod
滚动升级(不停止旧服务的状态下升级)和回滚应用(将应用回滚到之前的版本)
平滑地扩容和缩容
暂停和继续Deployment
1.1 Deployment 的控制器,实际上控制的是 ReplicaSet 的数目,以及每个 ReplicaSet的属性。而一个应用的版本,对应的正是一个 ReplicaSet;这个版本应用的 Pod数量,则由 ReplicaSet 通过它自己的控制器(ReplicaSet Controller)来保证。
1.2 Deployment具备ReplicaSet的全部功能,同时还增添了部分特性。
- 事件和状态查看:必要时可以查看Deployment对象升级的详细进度和状态。
- 回滚:升级操作完成后发现问题时,支持使用回滚机制将应用返回到前一个或由用户指定的历史记录中的版本上。
- 版本记录:对Deployment对象的每一次操作都予以保存,以供后续可能执行的回滚操作使用。
- 暂停和启动:对于每一次升级,都能够随时暂停和启动。
- 多种自动更新方案:一是Recreate,即重建更新机制,全面停止、删除旧有的Pod后用新版本替代;另一个是RollingUpdate,即滚动升级机制,逐步替换旧有的Pod至新的版本。
1.3 创建Deployment除了控制器类型和名称之外,它与前面ReplicaSet控制器示例中的内容几乎没有什么不同
创建deployment资源ÿ