Kubernetes Deployment
Deployment 是 Kubernetes v1.2 引入的新概念,引入的目的是为了更好的解决 Pod 的编排问题。为此,Deployment 在内部使用了 Replica Set 来实现目的,无论从 Deployment 的作用与目的、它的 YAML 定义,还是从它的具体命令操作来看,都可以把它看做 RC 的一次升级两者的相似度超过 90%。
Deplyment 相对于 RC 的嘴个最大升级时可以随时知道当前 Pod “部署” 的进度。实际上由于一个 Pod 的创建、调度、绑定节点以及在目标 Node 上启动对应的容器这一完整过程需要一定的时间,所以期待系统启动 N 个 Pod 副本的目标状态,实际上是一个连续变化的 “部署过程” 导致的最终状态。
Deployment 的典型使用场景有以下几个。
- 创建一个 Deployment 对象来生成对应的 Replica Set 并完成 Pod 副本的创建过程。
- 检查 Deployment 的状态来部署动作是否完成(Pod 副本的数量是否达到预期的值)。
- 更新 Deployment 以创建新的 Pod(比如镜像升级)。
- 如果当前 Deployment 不稳定,则回滚到一个早先的 Deployment 版本。
- 暂停 Deployment 以便于下一次性修改多个 PotTemplateSpec 的配置项,之后再回复 Deployment,进行新的发布。
- 扩展 Deployment 以应对高负载。
- 查看 Deployment 的状态,以此作为发布是否完成的指标。
- 清理不在需要的旧版本 ReplicaSets。
Deployment 的定义与 Replica Set 的定义很类似,除了 API 声明与 Kind 类型等有所区别:
1234 |
|
1234 |
|
下面通过运行一些例子来一起直观的感受这个新概念。首先创建一个 tomcat 的 Deployment 描述文件,内容如下:3A网络怎么样?3A网络好不好,好久没有分享3A网络了,本月他家发布了2022年年初促销特惠价格,5Mbps、10Mbps、15Mbps 、30Mbps、 50Mbps、100Mbps香港优质或BGPN2、阿里云线路、华为云线路,满足多种项目需求!支持测试。全部线路月付99元起。如果你想购买香港服务器,可以看看他家的产品,性价比还是非常高的,目前商家有优质BGP、CN2、线路,国内用户用来做站非常不错。支持市面上99%的付款方式。需要更多支持请访问官网获取。官网:iis3.com
tomcat-deployment.yaml
|
创建命令:
|
查看 Deployment 信息:
|
对上述输出中涉及的数量解释如下:
- DESIRED:Pod 副本数量的期望值,即 Deployment 里定义的 Replica。
- CURRENT:当前 Replica 的值,实际上是 Deployment 所创建的 Replica Set 里的 Replica 值,这个值不断增加,直到达到 DESIRED 为止,表名整个部署过程完成。
- UP-TO-DATE:最新版本的 Pod 的副本数量,用于只是在滚动升级的过程中,有多少个 Pod 副本已经成功升级。
- AVAILABLE:当集群中可用的 Pod 副本数量,即集群中当前存活的 Pod 数量。
运行下述命令查看对应的 Replica Set,看到它的命名与 Deployment 的名字有关系:
|
运行下述命令查看创建的 Pod,发现 Pod 的命名与 Deployment 对应的 Replica Set 的名字为前缀,这种命名很清晰的表明了一个 Replica Set 创建了那些 Pod,对于 Pod 滚动升级这种复杂的过程来说,很容易排查错误:3A网络怎么样?3A网络好不好,好久没有分享3A网络了,本月他家发布了2022年年初促销特惠价格,5Mbps、10Mbps、15Mbps 、30Mbps、 50Mbps、100Mbps香港优质或BGPN2、阿里云线路、华为云线路,满足多种项目需求!支持测试。全部线路月付99元起。如果你想购买香港服务器,可以看看他家的产品,性价比还是非常高的,目前商家有优质BGP、CN2、线路,国内用户用来做站非常不错。支持市面上99%的付款方式。需要更多支持请访问官网获取。官网:iis3.com
|
运行 describe ,可以清楚的看到 Deployment 控制的 Pod 的水平扩展过程。
Pod 的管理对象,除了 RC 和 Deployment,还包括 ReplicaSet、Deployment、StatefulSet、Job 等,分别用于不同的应用场景中。