Why labels are mentioned three times in a single deployment

后端 未结 3 1167
清歌不尽
清歌不尽 2021-01-12 13:59

I\'ve gone over the following docomentation page: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

The example deployment yaml is as follows:

3条回答
  •  醉梦人生
    2021-01-12 14:43

    The first label is for deployment itself, it gives label for that particular deployment. Lets say you want to delete that deployment then you run following command:

    kubectl delete deployment -l app=nginx
    

    This will delete the entire deployment.

    The second label is selector: matchLabels which tells the resources(service etc) to match the pod according to label. So lets say if you want to create the service which has all the pods having labels of app=nginx then you provide following definition:

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
    spec:
      type: LoadBalancer
      ports:
        - port:  80
      selector:
        app: nginx
    

    The above service will look for the matchLabels and bind pods which have label app: nginx assigned to them

    The third label is podTemplate labels, the template is actually podTemplate. It describe the pod that it is launched. So lets say you have two replica deployment and k8s will launch 2 pods with the label specified in template: metadata: labels. This is subtle but important difference, so you can have the different labels for deployment and pods generated by that deployment.

提交回复
热议问题