Kind — A New Kubernetes Cluster

In this article, I would be talking about my experiences with a new local Kubernetes cluster call Kind.

Recently I wanted to experiment with something on a Kubernetes cluster, and I didn’t want to spin up a new cluster on AWS and wanted something quick.

Till now, Minikube was the only thing I was using as a local Kubernetes cluster. But I start noticing performance degradation on my system as soon as I started using Minikube.

I came across another local Kubernetes cluster called Kind and I want to share my learnings about it.


Kind is a command-line tool that helps you to create a local Kubernetes cluster. It creates a cluster using docker images and it mimics a Kubernetes cluster on your local system.

Minikube vs Kind.

The latest version of Minikube uses docker images to create the cluster, But it requires at least 1.8 GB of memory to start. With Kind, I could start the cluster with just 1 GB and could deploy a simple pod that hardly consumed 200 MB of memory.

Single Node Cluster

Creating a cluster

To create a cluster just run the following command

Kind create cluster
Create Cluster

This will create a single-node Kubernetes cluster on your system by spinning up a docker container. By default, it creates a cluster with the name Kind. But you can specify a custom name by specifying--nameflag.

kind create cluster —-name kind-cluster-2

You can also spin up multiple clusters using kind. You just need to specify a different name while creating the cluster.

Creating Pod with Custom Docker Images.

To load a custom image you created on your machine, You don’t need to push the image to any repository. Rather just use the following command to load your custom image in the cluster.

Kind load docker-image <custom-image>:<tag>

Once it’s loaded, You can then reference the image directly in your Kubernetes deployment configuration file or you could also deploy a helm chart containing the custom image without the need to specify any image repository.

Custom Docker Image

Multi-Node Cluster

This feature was fascinating to me, If you want to create a multi-node cluster, you can provide config to create it.

Kind create cluster --config config.yml

Let’s have a look at the config.

kind: Cluster
— role: control-plane
— role: worker
— role: worker

I have asked it to create a cluster with a control plane and two worker nodes in this config.

Now, you can further customize this to map node ports to your host port. This would be helpful in a situation wherein say you have NodePort service, and you want to access it directly from your local system.

kind: Cluster
- role: control-plane
- role: worker
- containerPort: 80
hostPort: 8080

Custom Worker Node images.

Since Kind works with docker images, You can specify a custom docker image that you would like to run. Currently, it uses the docker images provided by kind. This means you can provide a specific version of Kubernetes that you would like to run, just by changing the image tag. You can find all the Kind images here.

kind: Cluster
- role: control-plane
- role: worker
image: kindest/node:v1.16.4


Kind also provides functions that will allow your terminal to autocomplete your commands. This depends on the shell you use. Currently, it supports functions for Bash, ZSH (also oh-myzsh), and Fish shell. You can get these functions by using the following command.

kind completion zsh
Kind Auto completion

If you want to know more on how to configure auto-completion with ZSH you can refer to the repo documentation here


After exploring Kind, I found it pretty simple and straightforward. The major benefit I found is that I can customize the cluster’s configuration the way I want and I don’t have to worry about performance degrade compared to Minikube.

This article was originally Pushed on RefactorFirst.

Feel free to share this article and follow me on Twitter. You can also subscribe to my newsletter on

You can always say a thank you and support my articles by buying me a coffee. :)




Software Craftsman, Tech Enthusiast. I run to post all my articles

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Binary Search Algorithm Implementation and Time Complexity Explained O(logN)

Ubuntu upgrade from 18.04 to 20.04 LTS: Installation Requirements for an Existing Rails Application

Ubuntu upgrade from 18.04 to 20.04 LTS

Snobbish AI, Starter Kits, & More…

Python String Concatenation and Formatting

Strategies to migrate Monolithic Application to Microservices

Photo by Drew Hays on Unsplash

Implementing the GPSTest Database: A Serverless Architecture

Contract based testing using spring cloud contract

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Amrut Prabhu

Amrut Prabhu

Software Craftsman, Tech Enthusiast. I run to post all my articles

More from Medium

Deploy a Simple React app frontend in Nginx Server with Kubernetes on Ubuntu wsl2 on Windows

Docker NGINX as Reverse Proxy

Cloud Native Buildpacks / in GitLab CI without Docker & pack CLI

Container Orchestration