Kubernetes Deployment

Deployment是Kubernetes1.2引入的新概念,引入的目的是为了更好的解决Pod的编排问题,为此Deployment内部使用了Replica Set来实现目的

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

创建一个Nginx Deployment

[root@master ~]# cat nginx-deployment.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: abcdocker
spec:
  replicas: 1
  selector:
    matchLabels:
      app: abcdocker
  template:
    metadata:
      labels:
        app: abcdocker
    spec:
      containers:
      - name: nginx
        image: nginx:1.13.5-alpine
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

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

创建nginx-deployment.yaml

[root@master ~]# kubectl create -f nginx-deployment.yaml 
deployment.apps/abcdocker created

查看deployment

[root@master ~]# kubectl get deployment
NAME        DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
abcdocker   1         1         1            0           18s

查看对应的Replica Set

[root@master ~]# kubectl get rs
NAME                   DESIRED   CURRENT   READY     AGE
abcdocker-86459dd76f   1         1         0         18m

$rs的命名与Deployment的名字有关系

查看Pod

[root@master ~]# kubectl get pods
NAME                         READY     STATUS              RESTARTS   AGE
abcdocker-86459dd76f-m6pj7   0/1       ContainerCreating   0          24m

Pod的命名以Deployment对应的Replica Set的名称为前缀,这种命名很清晰地表明了一个Replica Set创建了哪些Pod

运行 [kubetl describe deployments] 可以清楚的看到Deployment控制的Pod详细信息

查看deployment信息

[root@master ~]# kubectl get deployments
NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2         2         2            2           33d

-w1147

deployment 参数解释

参数 解释
DESIRED Pod的副本数量的期望值,即Deployment里定义的Replica
CURRENT 当前Replica的值,实际上是Deployment所创建的Replica set里的Replica值,这个值不断增加,直到达到DESIRED为止
UP-TO-DATE 最新版本的Pod的副本数量,用于指示在滚动升级的过程中,有多少个Pod副本已经成功更新
AVAILABLE 当前集群中可用的Pod副本数量,即集群中当前存活的Pod数量

查看对应的Replica Set 我们可以看到他的命名和Deployment的名字有关系

[root@master ~]# kubectl get rs
NAME                          DESIRED   CURRENT   READY     AGE
nginx-deployment-7c5b578d88   2         2         2         33d

Pod的管理对象除了RC和Deployment,还包括ReplicaSet、DaemonSet、StatefulSet、Job等

运行下述命令可以查看创建的Pod

[root@master ~]# kubectl get pods
NAME                                READY     STATUS    RESTARTS   AGE
nginx-deployment-7c5b578d88-gzqvf   1/1       Running   0          30d
nginx-deployment-7c5b578d88-jc5td   1/1       Running   1          30d

https://blog.csdn.net/hxpjava1/article/details/79280900

Copyright © i4t.com 2019 all right reserved,powered by Gitbook该文件修订时间: 2019-05-08 18:04:50

results matching ""

    No results matching ""