A First look at kubectl in Google Kubernetes Engine
Tags: kubernetes, gcp, cloud, gke
Published: 2021-09-05 22:29:36

---
title: A First look at kubectl in Google Kubernetes Engine
published: true
description: A First look at kubectl in Google Kubernetes Engine
tags: kubernetes, gcp, cloud, gke
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g9uw0g1dxaljilr8hsgs.png
---
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

```bash
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](http://console.cloud.google.com/cloudshell) 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](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/). 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.

![sCC_F1_launch_Cloud_Shell_desktop.png](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uf9ybjhp3s56v0am8lhk.png)

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

```bash
kubectl [command] [TYPE] [NAME] [flags]
```

To illustrate this, let's see an example

```bash
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**

- [https://kubernetes.io/docs/reference/kubectl/overview/](https://kubernetes.io/docs/reference/kubectl/overview/)
- [https://kubernetes.io/docs/reference/kubectl/cheatsheet/](https://kubernetes.io/docs/reference/kubectl/cheatsheet/)
- [https://kubectl.docs.kubernetes.io](https://kubectl.docs.kubernetes.io/)