Recommended usage conventions for kubectl
.
kubectl
in Reusable ScriptsFor a stable output in a script:
-o name
, -o json
, -o yaml
, -o go-template
, or -o jsonpath
.jobs.v1.batch/myjob
. This will ensure that kubectl does not use its default version that can change over time.--generator
flag to pin to a specific behavior when you use generator-based commands such as kubectl run
or kubectl expose
.kubectl run
For kubectl run
to satisfy infrastructure as code:
:v1234
, v1.2.3
, r03062016-1-4
, rather than :latest
(For more information, see Best Practices for Configuration).--record
to annotate the created objects with the command line for an image that is lightly parameterized.kubectl run
flags.kubectl run --generator=deployment/v1beta1
.You can create the following resources using kubectl run
with the --generator
flag:
Resource | api group | kubectl command |
---|---|---|
Pod | v1 | kubectl run --generator=run-pod/v1 |
Replication controller (deprecated) | v1 | kubectl run --generator=run/v1 |
Deployment (deprecated) | extensions/v1beta1 | kubectl run --generator=deployment/v1beta1 |
Deployment (deprecated) | apps/v1beta1 | kubectl run --generator=deployment/apps.v1beta1 |
Job (deprecated) | batch/v1 | kubectl run --generator=job/v1 |
CronJob (deprecated) | batch/v1beta1 | kubectl run --generator=cronjob/v1beta1 |
CronJob (deprecated) | batch/v2alpha1 | kubectl run --generator=cronjob/v2alpha1 |
Note:kubectl run --generator
except forrun-pod/v1
is deprecated in v1.12.
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 |
--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.
To check the final resource that was created, use the --dry-run
flag, which only prints the object that would be sent to the cluster without really sending it.
kubectl apply
kubectl apply
to create or update resources. For more information about using kubectl apply to update resources, see Kubectl Book.Was this page helpful?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.