5.3.1 创建 Deployment

Deployment 是标准 Kubernetes API 资源,它构建于 ReplicaSet 资源之上,于是其 spec 字段中嵌套使用的字段包含了 ReplicaSet 控制器支持 replicas、selector、template 和 miniReadySeconds,它也正是利用这些信息完成了其二级资源 ReplicaSet 对象的创建。下面是一个 Deployment 控制器资源的配置清单示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
        ports:
        - name: http
          containerPort: 80

上面的内容显示出,除了控制器类型和名称之外,它与前面 ReplicaSet 控制器示例中的内容几乎没有什么不同。下面在集群中创建以了解它的工作方式:

**[terminal]
**[delimiter $ ]**[command kubectl apply -f myapp-deploy.yaml --record]
deployment.apps/myapp-deploy created

“kubectl get deployment” 命令可以列出创建的 Deployment 对象 myapp-deploy 及其相关的信息。下面显示的字段中,UP-TO-DATE 表示已经达到期望状态的 Pod 副本数量,AVAILABLE 则表示当前处于可用状态的应用程序的数量:

**[terminal]
**[delimiter $ ]**[command kubectl get deployment]
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
myapp-deploy   3/3     3            3           4m15s

Deployment 控制器会自动创建相关的 ReplicaSet 控制器资源,并以 “[DEPLOYMENT-NAME]-[POD-TEMPLATE-HASH-VALUE]” 格式为其命令,其中的 hash 值由 Deployment 控制器自动生成。由 Deployment 创建的 ReplicaSet 对象会自动使用相同的标签选择器,因此,可使用类似如下命令查看其相关的信息:

**[terminal]
**[delimiter $ ]**[command kubectl get replicasets -l app=myapp]
NAME                     DESIRED   CURRENT   READY   AGE
myapp-deploy-5fdb5f69f   3         3         3       9m48s

相关的 Pod 对象的信息可以用相似的命令进行获取。下面的命令结果中,Pod 对象的名称遵循 ReplicaSet 控制器的命令格式,它以 ReplicaSet 控制器的名称为前缀,后跟 5 位随机字符:

**[terminal]
**[delimiter $ ]**[command kubectl get pods -l app=myapp]
NAME                           READY   STATUS    RESTARTS   AGE
myapp-deploy-5fdb5f69f-df4qn   1/1     Running   0          12m
myapp-deploy-5fdb5f69f-gnbcz   1/1     Running   0          12m
myapp-deploy-5fdb5f69f-p2s6b   1/1     Running   0          12m

由此验证了 Deployment 借助于 ReplicaSet 管理 Pod 资源的机制,于是可以得知,其大部分管理操作与 ReplicaSet 相同。不过,Deployment 也有 ReplicaSet 所不具有的部分高级功能,这其中最著名的当属其自动滚动更新的机制。

results matching ""

    No results matching ""