Deployment内部使用了replica set来实现的,是 k8s v1.2引入的新概念。本次安装k8s是v1.17,完全支持。无论Deployment的作用与目的,它的yaml定义,还是从它具体命令行操作来看,我们都可以把它看作rc的一次升级,两者的相似度超过90%
Deployment的典型使用场景有以下几个:
1.创建一个Deployment对象来生成对应的replica set并完成pod副本的创建过程。
2.检查Deployment的状态来看部署动作是否完成(pod副本的数量是否达到预期的值)
3.更新Deployment以创建新的pod(比如镜像升级)
4.如果当前Deployment不稳定,则回滚到一个早先的Deployment版本
5.暂停Deployment以便于一次性修改多个podTemplateSpec的配置项,之后再恢复Deployment,进行新的发布.
6.扩展Deployment 以应对高负载。
7.查看Deployment 的状态,经此作为发布是否成功的指标
8. 清理不再需要的旧版本repliasets。
deployment定义与replia set的定义很类似,除了api声明与kind类型等有所区别:
下面是replia set
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx
下面是deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx