How to Install and Use Kind for Local Kubernetes Testing

Kind (Kubernetes IN Docker) is an excellent tool to create Kubernetes clusters locally using Docker containers. Here's a streamlined guide presented as a story for your infrastructure journey:
Step 1: Installing Kind
Imagine you’ve just arrived in a new world of local Kubernetes clusters, but first, you need the magic tool: kind
. To install it, execute the following script on your host:
#!/bin/bash
# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo cp ./kind /usr/local/bin/kind
rm -rf kind
Once this script runs, kind
becomes available system-wide:
[binita@test-kubernetes]# kind --version
kind version 0.20.0
Step 2: Bringing Up a Multi-Node Cluster
The goal? A 4-node Kubernetes cluster with 1 control plane and 3 workers. Start by creating a configuration file named config.yml
:
# 4-node (3 workers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
image: kindest/node:v1.28.0
- role: worker
image: kindest/node:v1.28.0
- role: worker
image: kindest/node:v1.28.0
- role: worker
image: kindest/node:v1.28.0
To start the cluster, execute:
[binita@test-kubernetes]# kind create cluster --config=config.yml
You’ll see something magical:
Nodes are prepared 📦.
Control plane spins up 🕹️.
Worker nodes join 🚜.
Networking and storage are configured 🔌 💾.
Once the cluster is ready, you can interact with it using:
kubectl cluster-info --context kind-kind
Step 3: Checking Cluster Status
You can verify your cluster setup with:
Kind Command:
kind get clusters
kubectl Command:
kubectl cluster-info
Docker Command:
Since Kind runs each Kubernetes node as a Docker container, you can inspect them:docker ps
Output will show containers like
kind-worker
,kind-control-plane
, etc., representing the nodes in your cluster.Node Details:
kubectl get nodes
Example output:
NAME STATUS ROLES AGE VERSION kind-control-plane Ready control-plane 22m v1.28.0 kind-worker Ready <none> 21m v1.28.0 kind-worker2 Ready <none> 21m v1.28.0 kind-worker3 Ready <none> 21m v1.28.0
Step 4: Validating Client and Cluster Versions
Ensure your kubectl client matches the server version:
kubectl version
You’ll see output like this:
Client Version: v1.28.3
Server Version: v1.28.0
Takeaways
Kind runs each Kubernetes node as a Docker container within your host (physical machine or VM).
Kind is not for production; it’s designed for local testing and development.
Production-grade clusters spread nodes across multiple hosts, which is outside the scope of Kind.
Subscribe to my newsletter
Read articles from Khushbu Koradiya directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
