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 /, like example.com/my-app. fancy prefix, slay πŸ’…
  • If --overwrite is 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-version is 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 -f or -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, --filename recursively. 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 templates http://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 exporting KUBECTL_KUBERC=false feature gate or turning off the feature KUBERC=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=raw prints 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 named bar if it exists, and it does not require the --overwrite flag. 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