Labels, Selectors and Annotations

Labels, Selectors and Annotations

Labels and Selectors allow us to label every K8s resource and later select them to apply an action.
  • Get pods with label filter - k get pod --selector key=value
  • Get pods with multiple label filters - k get pods --selector env=prod,bu=finance,tier=frontend

Labels in Pod

apiVersion: v1 kind: Pod metadata: labels: name: frontend annotations: podVersion: 1.2 spec: containers: - name: httpd image: httpd:2.4-alpine

Labels in Deployment

Labels in the template section is used to label the Pods created by the deployment. These labels are then selected by the deployment to group these pods under the same deployment. If any other pod that was created before this deployment and it matches the label selector criteria, it will be controlled by this deployment too.
The labels for the deployment is not directly involved in labelling or selecting the pods.
apiVersion: apps/v1 kind: Deployment metadata: name: httpd-frontend labels: name: frontend annotations: buildVersion: 1.2 spec: replicas: 3 selector: matchLabels: name: frontend template: metadata: labels: name: frontend spec: containers: - name: httpd image: httpd:2.4-alpine

Annotations

Annotations are used to provide miscellaneous information to the Pod. They are not used by K8s internally but they can be used by other tools running on the K8s cluster.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/ssl-redirect: "false" name: ingress-pay namespace: critical-space spec: rules: - http: paths: - backend: service: name: pay-service port: number: 8282 path: /pay pathType: Prefix