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 runFor 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 --generator=run-pod/v1.kubectl run flags.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 |
| ReplicationController (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/v2alpha1 | kubectl run --generator=cronjob/v2alpha1 |
| CronJob (deprecated) | batch/v1beta1 | kubectl run --generator=cronjob/v1beta1 |
Note: Generators other thanrun-pod/v1are deprecated.
If you explicitly set --generator, kubectl uses the generator you specified. If you invoke kubectl run and don’t specify a generator, kubectl automatically selects which generator to use based on the other flags you set. The following table lists flags and the generators that are activated if you didn’t specify one yourself:
| Flag | Generated Resource |
|---|---|
--schedule=<schedule> |
CronJob |
--restart=Always |
Deployment |
--restart=OnFailure |
Job |
--restart=Never |
Pod |
If you don’t specify a generator, kubectl pays attention to other flags in the following order:
--schedule--restartYou can use the --dry-run flag to preview the object that would be sent to your cluster, without really submitting it.
kubectl applykubectl 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.