1.4.6

引入的目的是为了更好的解决POD的编排问题。可以看作是一次RC的升级,两者相似度超过90%

最大的升级是我们可以随时知道当前POD“部署”的进度,实际上是有雨一个POD的创建、调度、绑定节点及在目标NODE上启动对应的容器这一完整过程需要一定的时间。


Deployment的典型使用场景有以下就几个
*创建一个Deployment对象来生成对应的replica set并完成pod副本的创建过程
*更新deployment以创建新的POD(比如镜像的升级)
*如果当前Deployment不稳定,则回滚到一个早先的deployment版本
*暂停deployment以便于一次性修改多个podTemplateSpec的配置项,之后在恢复deployment,进行新的发布
*扩展Deployment以应对高负载
*查看Deployment的状态,以此做为发布是否成功的指标
*清理不再需要的旧版本ReplicaSets

[root@localhost conf]# kubectl get deployments
NAME       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
frontend   1         1         1            0           1m
[root@localhost conf]# 

DESIRED:pod副本数量的期望值
CURRENT:当前replica的值
UP-TO-DATE:最新版本POD的副本数量
AVAILABLE:当前集群中可用的POD副本数量


POD的管理对象,除了RC和Deployment,还包括ReplicaSet、DamonSet、StatefulSet、Job等,分别用于不同的场景中。第二章详细介绍。
[root@localhost conf]# cat tomcat-deployment.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 1
  selector:
    matchLabels:
      tier: frontend
    matchExpressions:
      - {key: tier, operator: In, values: [frontend]}
  template:
    metadata:
      labels:
        app: app-demo
        tier: frontend
    spec:
      containers:
      - name: tomcat-demo
        image: tomcat
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
[root@localhost conf]#