kubectl Usage Conventions
For a stable output in a script:
- Request one of the machine-oriented output forms, such as
-o name
,-o json
,-o yaml
,-o go-template
, or-o jsonpath
. - Fully-qualify the version. For example,
jobs.v1.batch/myjob
. This will ensure that kubectl does not use its default version that can change over time. - Specify the
—generator
flag to pin to a specific behavior when you use generator-based commands such askubectl run
orkubectl expose
.
For kubectl run
to satisfy infrastructure as code:
- Tag the image with a version-specific tag and don’t move that tag to a new version. For example, use
:v1234
,v1.2.3
,r03062016-1-4
, rather than:latest
(For more information, see Best Practices for Configuration). - Capture the parameters in a checked-in script, or at least use
—record
to annotate the created objects with the command line for an image that is lightly parameterized. - Check in the script for an image that is heavily parameterized.
- Switch to configuration files checked into source control for features that are needed, but not expressible via
kubectl run
flags.
Generators
If you do not specify a generator flag, other flags prompt you to use a specific generator. The following table lists the flags that force you to use specific generators, depending on the version of the cluster:
Generated Resource | Cluster v1.4 and later | Cluster v1.3 | Cluster v1.2 | Cluster v1.1 and earlier |
---|---|---|---|---|
Pod | —restart=Never | —restart=Never | —generator=run-pod/v1 | —restart=OnFailure OR —restart=Never |
Replication Controller | —generator=run/v1 | —generator=run/v1 | —restart=Always | |
Deployment | —restart=Always | —restart=Always | —restart=Always | N/A |
Job | —restart=OnFailure | —restart=OnFailure | —restart=OnFailure OR —restart=Never | N/A |
Cron Job | —schedule=<cron> | N/A | N/A | N/A |
Note: These flags use a default generator only when you have not specified any flag.This means that when you combine—generator
with other flags the generator that you specified later does not change. For example, in a cluster v1.4, if you initially specify—restart=Always
, a Deployment is created; if you later specify—restart=Always
and—generator=run/v1
, a Replication Controller is created.This enables you to pin to a specific behavior with the generator,even when the default generator is changed later.
The flags set the generator in the following order: first the —schedule
flag, then the —restart
policy flag, and finally the —generator
flag.
kubectl apply
- You can use to create or update resources. For more information about using kubectl apply to update resources, see .
Was this page helpful?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it onStack Overflow.Open an issue in the GitHub repo if you want toorsuggest an improvement.