A First look at kubectl in Google Kubernetes Engine
Azeez Lukman
Posted on September 5, 2021
kubectl is a command-line utility used by administrators to control Kubernetes clusters. Behind the scenes, it transforms the command line entries into API calls.
Kubectl can be thought of as a command-line tool for administering the internal state of an existing cluster. But one thing to note is that kubectl can't create new clusters or change existing ones. For this, you use the gcloud command-line utility.
Another way to describe kubectl is as a client for the Kubernetes API. The main job of kubectl is to carry out HTTP requests to the Kubernetes API
Prerequisites
The following steps assume that you have some experience architecting with Kubernetes Engine
Configure Google Kubernetes Engine Cluster
You need to have your cluster configured with some tool. We would be using gcloud as I mentioned earlier
The gcloud command-line utility and kubectl are both installed in the cloud shell by default
Firstly, create a GKE cluster by running the following command
gcloud container clusters create my-cluster
Creating my-cluster...done
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-cluster
This command creates a cluster using the gcloud utility, and names the cluster my-cluster. It also generates a kubeconfig entry generated for my-cluster.
After the cluster is configured and created, the next step is to connect kubectl to the Kubernetes engine cluster and authorize kubectl on the cluster.
kubectl requires credentials before it can be used at all, so it must be configured on the cluster with the proper credentials.
When you access a cluster using kubectl, GKE uses the kubeconfig.json file generated on the cluster for authentication. The file contains user information, based on which GKE determines which Kubernetes resources can be accessed by kubectl. The permissions recorded in a kubeconfig.json file vary from user to user.
Generate a kubeconfig
entry by running the following command:
gcloud container clusters get-credentials my-app
This command writes the configuration info into a config file and is placed in the .kube dir in the home dir.
Using kubectl on google cloud shell
Kubectl is no ready for use on your cluster. kubectl is installed on google cloud shell out of the box.
Cloud Shell is a personal hosted Virtual Machine that comes pre-loaded with developer tools for Google Cloud products. It usually comes with a built-in code editor, persistent disk storage, and web preview functionality.
You can also install kubectl on your local machine, learn more about it here. This article focuses on utilizing the cloud shell to use kubectl with GKE.
The could shell can be accessed from the top right in the cloud console, open it.
Sending instructions to kubectl follows a declarative approach where you simply tell it the type of command you want to perform and where to perform that task on followed by some optional flags to enhance some commands.
The kubectl syntax typically follows a form of
kubectl [command] [TYPE] [NAME] [flags]
To illustrate this, let's see an example
kubectl get pods my-pod -o yaml
which will make a call to the Kubernetes API to with get as the command, my-pod is the name of the pod I want to get, my-pod is a pod and output the configuration of a pod named my-pod in YAML format.
Thank you for reading, I'm Azeez Lukman and here's a developer's journey building something awesome every day. Please let's meet on Twitter, LinkedIn and GitHub and anywhere else @robogeeek95
Learn More
Posted on September 5, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.