kubectl in Reusable Scripts
For a stable output in a script:
- Request one of the machine-oriented output forms, such as
-o go-template, or
- 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.
- Don’t rely on context, preferences, or other implicit states.
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
r03062016-1-4, rather than
:latest(For more information, see Best Practices for Configuration).
- 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
You can use the
--dry-run=client flag to preview the object that would be sent to your cluster, without really submitting it.Note: All
kubectl generators are deprecated. See the Kubernetes v1.17 documentation for a list of generators and how they were used.
You can generate the following resources with a
kubectl create --dry-run=client -o yaml:
clusterrole Create a ClusterRole. clusterrolebinding Create a ClusterRoleBinding for a particular ClusterRole. configmap Create a configmap from a local file, directory or literal value. cronjob Create a cronjob with the specified name. deployment Create a deployment with the specified name. job Create a job with the specified name. namespace Create a namespace with the specified name. poddisruptionbudget Create a pod disruption budget with the specified name. priorityclass Create a priorityclass with the specified name. quota Create a quota with the specified name. role Create a role with single rule. rolebinding Create a RoleBinding for a particular Role or ClusterRole. secret Create a secret using specified subcommand. service Create a service using specified subcommand. serviceaccount Create a service account with the specified name.
- You can use
kubectl applyto create or update resources. For more information about using kubectl apply to update resources, see Kubectl Book.
Q Node03 has our critical applications. We do not want to schedule any more apps on node03. Mark node03 as unschedulable but do not remove any apps currently running on it.
kubectl cordon node03