开发者学堂课程【Kubernetes 入门: 应用编排与管理:Deployment(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/51/detail/1012
应用编排与管理:Deployment(二)
三、操作演示
输入
~Kubectl get node |
输出
创建 development 输入
~kubectl creat -f/trp/development-case.yaml Development.opps”nginx-deplyment”created |
输出
这时 getpod 可以看到当前的 pod 其实有两个 ReplicaSet,development 提供相应的机制来对应这个问题
四、架构设计
1、管理模式
Deployment 只负责管理不同版本的 ReplicaSet,由 ReplicaSet 管理 Pod 副本数
每个 ReplicaSet 对应了 Deployment template 的一个版本
一个 ReplicaSet 下的 Pod 都是相同的版本
Development 创建 ReplicaSet,ReplicaSet 创建 Pod,他们的 OwnerRef 对应一个副的 Create
2、Deployment 控制器
所有控制器都是通过 informer 做一些 watch,Development 的控制器其实是关注 Development 以及 ReplicaSet 相关的 Event,收到事件会交到队列中,首先逻辑会判断 Check、paused,paused 其实是 develoyment 是否需要禁止新的发布,develoyment 控制器做了版本管理和版本下的维持工作
3、ReplicaSet 控制器
4、扩容模拟
Deployment 的副本数由 ReplicaSet 管理
修改 Deployment replicas 之后,controller 会把 replicas 同步到当前版本的ReplicaSet 中,由 ReplicaSet 执行扩容/缩容
5、发布模拟
Development template1 对应 ReplicaSet1,下面有三个 pod,这时候如果修改 template,那么 Development template 就会新建一个2的 ReplicaSet,而创建之后 controller 逐步修改两个 ReplicaSet 的 replicas
6、回滚模拟
回滚的过程,其实是 Deployment controller 重新调整下属 ReplicaSet 的 replicas 数量
最终使旧版本的 ReplicaSet 重新扩出所有 Pod
7、spec 字段解析
l MinReadySeconds:
判断 Pod available 的最小 ready 时间
l revisionHistoryLimit :
保留历史 revision(ReplicaSet)的数量,默认值为10
l paused:
标识 Deployment 只做数量维持、不做新的发布
l progressDeadlineSeconds:
判断 Deployment statuscondition 为 failed 的最大时间
8、升级策略字段解析
MaxUnavailable:滚动过程中最多有多少个 Pod 不可用
MaxSurge:滚动过程中最多存在多少个 Pod 超过期望 replicas 数量