云容器实例 CCI-Deployment:创建Deployment

时间:2023-12-21 21:07:00

创建Deployment

以下示例为创建一个名为nginx的Deployment负载,使用nginx:latest镜像创建两个Pod,每个Pod占用500m core CPU、1G内存。

apiVersion: apps/v1      # 注意这里与Pod的区别,Deployment是apps/v1而不是v1
kind: Deployment         # 资源类型为Deployment
metadata:
  name: nginx            # Deployment的名称
spec:
  replicas: 2            # Pod的数量,Deployment会确保一直有2个Pod运行         
  selector:              # Label Selector
    matchLabels:
      app: nginx
  template:              # Pod的定义,用于创建Pod,也称为Pod template
    metadata:
      labels:
        app: nginx
    spec:
      volumes:
        - name: cci-sfs-test                     # sfs卷的名称
          persistentVolumeClaim:
            claimName: cci-sfs-test
      containers:
      - image: nginx:latest
        name: container-0
        resources:
          limits:
            cpu: 500m
            memory: 1024Mi
          requests:
            cpu: 500m
            memory: 1024Mi
        volumeMounts:
          - name: cci-sfs-test
            mountPath: /tmp/sfs0/krlp2k8j        # sfs卷的容器内挂载路径  
      imagePullSecrets:           # 拉取镜像使用的证书,必须为imagepull-secret
      - name: imagepull-secret

从这个定义中可以看到Deployment的名称为nginx,spec.replicas定义了Pod的数量,即这个Deployment控制2个Pod;spec.selector是Label Selector(标签选择器),表示这个Deployment会选择Label为app=nginx的Pod;spec.template是Pod的定义,内容与Pod中的定义完全一致。

将上面Deployment的定义保存到deployment.yaml文件中,使用kubectl创建这个Deployment。

使用kubectl get查看Deployment和Pod,可以看到DESIRED值为2,这表示这个Deployment期望有2个Pod,CURRENT也为2,这表示当前有2个Pod,AVAILABLE为2表示有2个Pod是可用的。

$ kubectl create -f deployment.yaml -n $namespace_name 

$ kubectl get deployment -n $namespace_name
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx     2         2         2            2           8s
support.huaweicloud.com/devg-cci/cci_05_0005.html