Update the labels on a resource.
  • A label key and value must begin with a letter or number, and may contain letters, numbers, hyphens, dots, and underscores, up to 63 characters each.
  • Optionally, the key can begin with a DNS subdomain prefix and a single ‘/’, like
  • If –overwrite is true, then existing labels can be overwritten, otherwise attempting to overwrite a label will result in an error.
  • If –resource-version is specified, then updates will use this resource version, otherwise the existing resource-version will be used.


$ kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]


Current Status

$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6db489d4b7-b5nsn   1/1     Running   0          16m
nginx-6db489d4b7-vdhvz   1/1     Running   0          15m


kubectl label pods nginx-6db489d4b7-b5nsn unhealthy=true


$ kubectl describe pods nginx-6db489d4b7-b5nsn

Name:         nginx-6db489d4b7-b5nsn
Namespace:    default
Priority:     0
Node:         minikube/
Start Time:   Sun, 20 Sep 2020 15:09:09 +0000
Labels:       pod-template-hash=6db489d4b7
Annotations:  <none>
Status:       Running


  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  15m   default-scheduler  Successfully assigned default/nginx-6db489d4b7-b5nsn to minikube
  Normal  Pulling    15m   kubelet, minikube  Pulling image "nginx"
  Normal  Pulled     14m   kubelet, minikube  Successfully pulled image "nginx"
  Normal  Created    14m   kubelet, minikube  Created container nginx
  Normal  Started    14m   kubelet, minikube  Started container nginx

Notice that the labels has unhealthy=true as a last entry.

More Examples

# Update pod 'foo' with the label 'unhealthy' and the value 'true'.
kubectl label pods foo unhealthy=true
# Update pod 'foo' with the label 'status' and the value 'unhealthy', overwriting any existing value.
kubectl label --overwrite pods foo status=unhealthy
# Update all pods in the namespace
kubectl label pods --all status=unhealthy
# Update a pod identified by the type and name in "pod.json"
kubectl label -f pod.json status=unhealthy
# Update pod 'foo' only if the resource is unchanged from version 1.
kubectl label pods foo status=unhealthy --resource-version=1
# Update pod 'foo' by removing a label named 'bar' if it exists.
# Does not require the --overwrite flag.
kubectl label pods foo bar-

Last modified September 23, 2020: docs update (b46eb865)