Kubernetes has quickly become the leading container orchestration system with more than 2.8 million contributions and a growing majority of companies, according to CNCF, using it in production. Kubernetes enables engineers to host clusters of containers and scale them as needed depending on the requirements of your apps.
Kubectl is the Kubernetes command line tool and it makes running commands against a Kubernetes cluster easy. In this guide, you will learn how to use the
kubectl edit command to update your K8s resources on the fly.
What is kubectl edit used for?
As is clear by the name, the
kubectl edit command is used to edit a deployed resource in your Kubernetes cluster. The syntax is simple:
<resource type> could be anything from a deployment to a ReplicaSet. It is specified in the key kind in the resource file. The
<resource name> is defined under the key metadata.
You could also edit a resource file directly by using the following syntax:
Let’s consider the following deployment file as an example.
Once this file is applied, it will create a sample nginx server deployment with two replicas. You can now use the following command to edit this resource using the default editor (vi for Linux and notepad for Windows):
Alternatively, you could also run the following command, assuming that the resource file is stored at the root and named nginx.yaml:
Once you save the file, it will be updated in your K8s cluster.
Playing around with kubectl edit
There are a couple of important things you can do with this command.
Updating the default editor
When running normally, the
kubectl edit command would open the resource for editing in either vi for Linux or notepad on Windows. However, you can change this by updating the value of the
KUBE_EDITOR variable. To use the nano editor to edit your resources, you can run a similar command:
Changing the output version & type
The command will output the changes in the default API version by default. You can use the
--output-version command to change it. Also, the default file format for the command is YAML. You can use the
-o option to change. If you were to edit a JSON resource on your K8s server, here’s how you could do that:
Things to keep in mind while using kubectl edit
Here are a few things you should be aware of when using the
kubectl edit command:
- Concurrent Edits: One of the most common errors users face when working with
kubectl editis when another editor changes the file on the server while the user is editing it locally. In that case, you need to fetch the latest changes to the resource before adding your own. Your changes will be saved in a temporary file, and you will need to update the resource version before saving your changes.
- Kubectl edit vs. apply: It is often suggested not to use
kubectl editif you have an option to use the
kubectl applycommand. This is so because with
kubectl apply, you get to maintain a local copy of your resource file and check it in a version control system for persistence and version update management. However, if you need to make a very small change on the fly,
kubectl editcan come in quite handy.
Kubernetes is a very powerful and customizable container orchestration tool. The
kubectl edit command makes it very easy for users to edit Kubernetes resources on the fly. In this guide, we showed you how to use the command as well as shared some tips to keep in mind when using it.