Deployment

Deployment 一般用于部署公司的无状态服务。

Deployment 是 Kubernetes 在 1.2 版本中引入的新概念,用于更好地解决 Pod 的编排问题。为此, Deployment 在内部使用了 Replica Set 来实现目的。

Deployment 相对于 RC 的一个最大升级是我们可以随时知道当前 Pod “部署”的进度。实际上由于一个 Pod 的创建调度绑定节点及在目标 Node 上启动对应的容器这一完整过程需要一定的时间,所以我们期待系统启动 N 个 Pod 副本的目标状态,实际上是一个连续变化的“部署过程”导致的最终状态。

Deployment 的典型使用场景有以下几个:

  • 创建一个 Deployment 对象来生成对应的 Replica Set 并完成 Pod 副本的创建。

  • 检查 Deployment 的状态查看部署动作是否完成(Pod 副本数量是否达到预期的值)。

  • 更新 Deployment 以创建新的 Pod(比如镜像升级)。

  • 如果当前 Deployment 不稳定,则回滚到一个早先的 Deployment 版本。

  • 暂停 Deployment 以便于一次性修改多个 PodTemplateSpec 的配置项,之后再恢复 Deployment,进行新的发布。

  • 扩展 Deployment 以应对高负载

  • 查看 Deployment 的状态,以此作为发布是否成功的指标。

  • 清理不再需要的旧版本 ReplicaSet

除了 API 声明与 Kind 类型等有所区别,Deployment 的定义与 Replica Set 的定义很类似运行下述命令创建 Deployment:

kubectl create -f tomcat-deployment.yaml

最后更新于