KUBERNETES(1)(kubernetes)
π kubectl label π
okay bestie, welcome to the kubernetes manual (section 1, the big one) π this is the page for kubectl label, and honestly? it's giving "tiny command, huge power". let's get into it β¨
πΈ NAME πΈ
kubectl label β Update the labels on a resource π·οΈ
π SYNOPSIS π
kubectl label [OPTIONS]
π¦ DESCRIPTION π¦
Update the labels on a resource. that's the whole vibe, but there's lore, so listen up π
- 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. sixty-three. not sixty-four. do not test this π
- Optionally, the key can begin with a DNS subdomain prefix and a single
/, likeexample.com/my-app. fancy prefix, slay π - If
--overwriteis true, then existing labels can be overwritten, otherwise attempting to overwrite a label will result in an error. so like, no sneaky take-backs unless you say so π«Ά - If
--resource-versionis specified, then updates will use this resource version, otherwise the existing resource-version will be used.
β¨ OPTIONS β¨
--all=falseβ Select all resources, in the namespace of the specified resource types. every single one of them, no survivors, main character energy π-A,--all-namespaces=falseβ If true, check the specified action in all namespaces. yes, all of them, it's a whole multiverse situation π--allow-missing-template-keys=trueβ If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats. she's forgiving like that π--dry-run="none"β Must be"none","server", or"client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource. pretend mode, but make it official π--field-manager="kubectl-label"β Name of the manager used to track field ownership. someone has to take credit for these edits, and it's literally this string π--field-selector=""β Selector (field query) to filter on, supports'=','==', and'!='.(e.g.--field-selector key1=value1,key2=value2). The server only supports a limited number of field queries per type. ngl the server is a little picky about how many of these it'll accept π₯²-f,--filename=[]β Filename, directory, or URL to files identifying the resource to update the labels. yes bestie, a URL counts, go off π₯-k,--kustomize=""β Process the kustomization directory. This flag can't be used together with-for-R. it's giving exclusivity. pick one π«--list=falseβ If true, display the labels for a given resource. just a little show-and-tell πΈ--local=falseβ If true, label will NOT contact api-server but run locally. the introvert mode. no networking, no cap π-o,--output=""β Output format. One of: (json,yaml,kyaml,name,go-template,go-template-file,template,templatefile,jsonpath,jsonpath-as-json,jsonpath-file).--overwrite=falseβ If true, allow labels to be overwritten, otherwise reject label updates that overwrite existing labels. the polite default is "no touching" β--record=falseβ Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists.-R,--recursive=falseβ Process the directory used in-f,--filenamerecursively. Useful when you want to manage related manifests organized within the same directory. she goes deep π³οΈβ¨--resource-version=""β If non-empty, the labels update will only succeed if this is the current resource-version for the object. Only valid when specifying a single resource. one resource only, bestie, don't get greedy π-l,--selector=""β Selector (label query) to filter on, supports'=','==','!=','in','notin'.(e.g.-l key1=value1,key2=value2,key3 in (value3)). Matching objects must satisfy all of the specified label constraints. all of them. every single constraint. periodt π―--show-managed-fields=falseβ If true, keep the managedFields when printing objects in JSON or YAML format. show the receipts π--template=""β Template string or path to template file to use when-o=go-template,-o=go-template-file. The template format is golang templateshttp://golang.org/pkg/text/template/#pkg-overview.
π OPTIONS INHERITED FROM PARENT COMMANDS π
these aren't even hers, she just inherited them from the parent command and carries them everywhere like a little heirloom π«Ά
--as=""β Username to impersonate for the operation. User could be a regular user or a service account in a namespace. who are we today? choose your fighter π--as-group=[]β Group to impersonate for the operation, this flag can be repeated to specify multiple groups. stack 'em up π--as-uid=""β UID to impersonate for the operation.--as-user-extra=[]β User extras to impersonate for the operation, this flag can be repeated to specify multiple values for the same key.--cache-dir="/home/username/.kube/cache"β Default cache directory. the little closet where she keeps everything π--certificate-authority=""β Path to a cert file for the certificate authority--client-certificate=""β Path to a client certificate file for TLS--client-key=""β Path to a client key file for TLS--cluster=""β The name of the kubeconfig cluster to use--context=""β The name of the kubeconfig context to use--disable-compression=falseβ If true, opt-out of response compression for all requests to the server. uncompressed and unbothered β¨--insecure-skip-tls-verify=falseβ If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure.
β οΈ bestie that one is literally named insecure. it does exactly what it says. it's giving "living dangerously" and not in the cute way π
--kubeconfig=""β Path to the kubeconfig file to use for CLI requests.--kuberc=""β Path to the kuberc file to use for preferences. This can be disabled by exportingKUBECTL_KUBERC=falsefeature gate or turning off the featureKUBERC=off.--match-server-version=falseβ Require server version to match client version-n,--namespace=""β If present, the namespace scope for this CLI request. where are we doing this? pick a room π--password=""β Password for basic authentication to the API server--profile="none"β Name of profile to capture. One of (none|cpu|heap|goroutine|threadcreate|block|mutex|trace)--profile-output="profile.pprof"β Name of the file to write the profile to--proxy-url=""β Proxy URL to use for requests to the API server--request-timeout="0"β The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g.1s,2m,3h). A value of zero means don't timeout requests. zero means she waits forever, patiently, like a true ride-or-die π-s,--server=""β The address and port of the Kubernetes API server--tls-server-name=""β Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used--token=""β Bearer token for authentication to the API server--user=""β The name of the kubeconfig user to use--username=""β Username for basic authentication to the API server--version=falseβ--version,--version=rawprints version information and quits;--version=vX.Y.Z...sets the reported version--warnings-as-errors=falseβ Treat warnings received from the server as errors and exit with a non-zero exit code. warnings? in THIS economy? nope, we're escalating ππ₯
π EXAMPLE π
okay here's the demo reel, look how easy she makes it β¨
# 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-
π«Ά little note for you: that last one,bar-, removes the label namedbarif it exists, and it does not require the--overwriteflag. the trailing dash is the whole trick. iconic behavior, no notes π
π§ SEE ALSO π§
kubectl(1), β go say hi to the parent, she's the whole family tree π³
π HISTORY π
January 2015, Originally compiled by Eric Paris (eparis at redhat dot com) based on the kubernetes source material, but hopefully they have been automatically generated since! ngl that last part is so real of them π
and that's the whole page bestie, you ate it πβ¨ this was kubectl label, from the Manuals collection, User section, page KUBERNETES(1)(kubernetes) β Eric Paris, Jan 2015. go label something responsibly, mwah ππ
π¦ where this page comes from
- arch rolling: kubectl 1.37.2-1 Β· Apache-2.0
- fedora 43: kubernetes1.37-client 1.37.0-3.fc43
- fedora 43: kubernetes1.37-client 1.37.1-1.fc43 Β· Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND BSD-3-Clause-HP AND CC-BY-4.0 AND ISC AND MIT AND MPL-2.0
- fedora 44: kubernetes1.37-client 1.37.0-3.fc44
- fedora 44: kubernetes1.37-client 1.37.1-1.fc44 Β· Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND BSD-3-Clause-HP AND CC-BY-4.0 AND ISC AND MIT AND MPL-2.0
- nixpkgs unstable: kubectl 1.37.2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms