Why labels are mentioned three times in a single deployment

徘徊边缘 提交于 2019-12-01 08:26:21

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.

First label:

It is deployment label which is used to select deployment. You can use below command using first label:

kubectl get deployment -l app=nginx

Second Label:

It is not a label . It is label selector to select pod with labels nginx. It is used by ReplicaSet.

Third Label:

It is pod label to identify pods. It is used by ReplicaSet to maintain desired num of replica and for that label selector is used. Also it is used to selects pod with below command:

kubectl get pods -l app=nginx
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!