How to Use Labels in Kubernetes Pods Effectively


Kubernetes Labels Explained: Grouping and Managing Resources

What are Labels in Kubernetes?

👉 Labels are key = value pairs attached to Kubernetes objects (Pods, Nodes, Deployments, etc.).

Used for:

  • Grouping resources
  • Filtering objects
  • Connecting services to pods
  • Scheduling workloads

Example:

app=frontend
env=prod
tier=backend

Example (YAML with labels)

apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: nginx
env: dev
tier: frontend
spec:
containers:
- name: nginx
image: nginx
``

First , create a pod with labels

kubectl apply -f createpods.yaml

1. Show labels

    kubectl get pods --show-labels

    2. Add label to resource

    kubectl label pod myapp-pod app=nginx

    3. Select query to labels and selectors

    kubectl get pods --selector env=dev -- return all pods having env=dev set in labels during creation
    kubectl get pods --selector env=qa -- return all pods having env=qa set in labes during creating
    Another method
    kubectl get pods -l env=dev
    kubeclt get pods -l env=qa --show-labels

    4. Sector for multiple labels and adding show-labels to see labels

    --output include only pod which has label env value as prod, test
    kubeclt get pods -l 'env=prod,env=test' --show-labels
    --output include only pod which has label env value as prod, test
    kubectl get pods -l 'env in (prod,test)'
    --output not include prod, test value in env pods
    kubectl get pods -l 'env notin (prod,test)'

    5. Output a particular label in column format

    kubectl get pods -L env

    6. Update label (overwrite)

    kubectl label pod myapp-pod env=prod --overwrite
    kubectl get pod myapp-pod --show-labels

    7. Multiple filters

    kubectl get pods -l app=nginx,env=dev

    8. Removing an existing label

    Note minus sign means to remove label

    kubectl get pods myapp-pod env-

    9. Delete all pod on bases of condition matching label

    -- Delete all pod with test label as value in env
    kubectl delete pod -l env=test
    kubectl get pods --show-labels