Kubernetes的基本概念和术语-Deployment

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

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

  1.  创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建。
  2.  检查Deployment的状态来看部署动作是否完成(Pod副本数量是否达到预期的值)。
  3.  更新Deployment以创建新的Pod(比如镜像升级)。
  4.  如果当前Deployment不稳定,则回滚到一个早先的Deployment版本。
  5.  暂停Deployment以便于一次性修改多个PodTemplateSpec的配置项,之后再恢复Deployment,进行新的发布。
  6.  扩展Deployment以应对高负载。
  7.  查看Deployment的状态,以此作为发布是否成功的指标。
  8.  清理不再需要的旧版本ReplicaSets。
apiVersion: extensions/v1betal
kind: Deployment
metadata: 
  name: nginx-deployment



apiVersion: extensions/v1betal
kind: ReplicaSet
metadata: 
  name: nginx-deployment

除了API声明与Kind类型等有所区别,Deployment的定义与Replica Set的定义很类似:

apiVersion: extensions/v1betal
kind: Deployment
metadata: 
  name: fronted
sepc:
  replicas: 1
  selector:
    matchLables:
      tier: fronted
    matchExpressions:
      - {key: tier, operator: In, values, [fronted]}
  template:
    matadata:
      lables:
        app: app-demo
        tier: fronted
    spec:
      containers:
      - name: tomcat-demo
        image: tomcat
        imagePullPolicy: ifNotPresent
        ports:
        - containerPort: 8080

运行下述命令创建Deployment

kubectl creat -f tomcat-deployment.yaml

 

 

对上述输出中涉及的数量解释如下。

  1.  DESIRED:Pod副本数量的期望值,即在Deployment里定义的Replica。
  2.  CURRENT:当前Replica的值,实际上是Deployment创建的Replica Set里的Replica值,这个值不断增加,直到达到DESIRED为止,表明整个部署过程完成。
  3.  UP-TO-DATE:最新版本的Pod的副本数量,用于指示在滚动升级的过程中,有多少个Pod副本已经成功升级。
  4.  AVAILABLE:当前集群中可用的Pod副本数量,即集群中当前存活的Pod数量。

运行下述命令查看对应的Replica Set,我们看到它的命名与Deployment的名称有关系:

运行下述命令查看创建的Pod,我们发现Pod的命名以Deployment对应的Replica Set的名称为前缀,这种命名很清晰地表明了一个Replica Set创建了哪些Pod,对于Pod滚动升级这种复杂的过程来说,很容易排查错误:

运行kubectl describe deployments,可以清楚地看到Deployment控制的Pod的水平扩展过程,具体内容可参见第3章的说明,这里不再赘述。

Pod的管理对象,除了RC和Deployment,还包括ReplicaSet、DaemonSet、StatefulSet、Job等,分别用于不同的应用场景中,将在第3章进行详细介绍。

 

posted @ 2021-02-02 10:44  星火撩原  阅读(134)  评论(0编辑  收藏  举报