Kubectl wait: Difference between revisions
No edit summary |
|||
Line 15: | Line 15: | ||
==Wait on a Pod Specified by Name== | ==Wait on a Pod Specified by Name== | ||
<syntaxhighlight lang='bash'> | |||
kubectl wait --for=condition=Ready pod <pod-name> | |||
</syntaxhighlight> | |||
==Wait on a Pod Specified by Label== | ==Wait on a Pod Specified by Label== | ||
<syntaxhighlight lang='bash'> | |||
kubectl wait --for=condition=Ready -l color=blue | |||
</syntaxhighlight> | |||
For more details on selector syntax see [[#-l.2C_--selector|option -l, --selector]] below. | For more details on selector syntax see [[#-l.2C_--selector|option -l, --selector]] below. | ||
Line 29: | Line 33: | ||
Pod specified by name: | Pod specified by name: | ||
<syntaxhighlight lang='bash'> | |||
kubectl wait --for=delete pod <pod-name> --timeout=60s | |||
</syntaxhighlight> | |||
Pod specified by selector: | Pod specified by selector: | ||
Line 37: | Line 43: | ||
==Namespace Deletion== | ==Namespace Deletion== | ||
<syntaxhighlight lang='bash'> | |||
kubectl wait --for=delete namespace <namespace-name> --timeout=60s | |||
</syntaxhighlight> | |||
=Options= | =Options= | ||
Line 47: | Line 55: | ||
{{Warn|🛑 The resource must '''exist''' for this option to be effective. If the resource is specified by name and does not exist, then the wait command exits immediately with an error message ("Error from server (NotFound): pods "..." not found"), irrespective of the timeout value. If the resource is specified by selector, the error message is "at least one resource must be specified to use a selector" or "no matching resources found". This is a known issue: https://github.com/kubernetes/kubernetes/issues/83242}} | {{Warn|🛑 The resource must '''exist''' for this option to be effective. If the resource is specified by name and does not exist, then the wait command exits immediately with an error message ("Error from server (NotFound): pods "..." not found"), irrespective of the timeout value. If the resource is specified by selector, the error message is "at least one resource must be specified to use a selector" or "no matching resources found". This is a known issue: https://github.com/kubernetes/kubernetes/issues/83242}} | ||
<syntaxhighlight lang='bash'> | |||
... --timeout=30s ... | |||
</syntaxhighlight> | |||
==-l, --selector== | ==-l, --selector== | ||
Line 53: | Line 63: | ||
Specifies the selector (label query) to use to identify the resource. The expression supports '=', '==', and '!='. | Specifies the selector (label query) to use to identify the resource. The expression supports '=', '==', and '!='. | ||
<syntaxhighlight lang='bash'> | |||
-l key1=value1,key2!=value2 | |||
</syntaxhighlight> |
Latest revision as of 18:53, 17 March 2021
Internal
Overview
The command waits for a specific condition, as reported by the ".status.conditions" field on a pod state, on one or many pods. If more than one pod is specified, the condition must be seen in every pod. Alternatively, the command can wait for a specific pod to be deleted. The command exits with 0 if the resource is found and the conditions are met, or with a non-zero status if the resource is not found, or the condition is not met. Unless a specific timeout is provided with --timeout, the default timeout occurs in ? seconds.
Using kubectl wait with Other Resources then Pods
The documentation mentions that wait applies to "resources", not specifically pods. Can wait be applied for other things than pods? If yes, what is them meaning of "condition" in that context, as other resources may not have conditions? This discussion thread shows that the matter is not settled, at least at the time of writing: https://github.com/kubernetes/kubernetes/issues/80828
Wait for a Specific Condition
Wait on a Pod Specified by Name
kubectl wait --for=condition=Ready pod <pod-name>
Wait on a Pod Specified by Label
kubectl wait --for=condition=Ready -l color=blue
For more details on selector syntax see option -l, --selector below.
Wait for Deletion
Pod Deletion
Pod specified by name:
kubectl wait --for=delete pod <pod-name> --timeout=60s
Pod specified by selector:
kubectl wait --for=delete pod -l color=blue --timeout=60s
Namespace Deletion
kubectl wait --for=delete namespace <namespace-name> --timeout=60s
Options
--timeout
The length of time to wait before giving up. Zero means check once and don't wait, negative means wait for a week.
🛑 The resource must exist for this option to be effective. If the resource is specified by name and does not exist, then the wait command exits immediately with an error message ("Error from server (NotFound): pods "..." not found"), irrespective of the timeout value. If the resource is specified by selector, the error message is "at least one resource must be specified to use a selector" or "no matching resources found". This is a known issue: https://github.com/kubernetes/kubernetes/issues/83242
... --timeout=30s ...
-l, --selector
Specifies the selector (label query) to use to identify the resource. The expression supports '=', '==', and '!='.
-l key1=value1,key2!=value2