Skip to content

Local Setup

Getting a Local Kubernetes Cluster

For most users, setting up a local Kubernetes cluster using Docker Desktop or KinD (Kubernetes in Docker) is the best option when learning. It's free and allows you to quickly and easily get your hands on and start playing with Kubernetes.

Option 1: Docker Desktop

Docker Desktop is a straightforward way to get Docker, Kubernetes, and kubectl on your computer, along with a user-friendly interface for managing your cluster contexts.

1. Install Docker Desktop:

  • Download and run the installer for your operating system from the Docker website.
  • Follow the installation prompts. For Windows users, install the WSL 2 subsystem when prompted.

2. Enable Kubernetes in Docker Desktop:

  • Click the Docker icon in your menu bar or system tray and go to Settings.
  • Select "Kubernetes" from the left navigation bar.
  • Check "Enable Kubernetes" and click "Apply & restart."
  • Wait a few minutes for Docker Desktop to pull the required images and start the cluster. The Kubernetes icon in the Docker Desktop window will turn green when the cluster is ready.

3. Verify the Installation:

  • Open a terminal and run the following commands to ensure Docker and kubectl are installed and working:
    docker --version
    kubectl version --client=true -o yaml
    
  • Ensure the cluster is running with:
    kubectl get nodes
    
    This command lists all the nodes in your Kubernetes cluster. You should see at least one node listed, confirming your cluster is up and running.

Option 2: KinD

KinD (Kubernetes in Docker) is an excellent tool for running local Kubernetes clusters using Docker containers. It’s lightweight, flexible, and ideal for development and testing. It's my tool of choice for local development/experimentation.

Steps to Set Up KinD:

Install KinD:

  • Follow the instructions on the KinD GitHub page to install KinD on your system.
  • For macOS users, you can simply run brew install kind to get up and running quickly.

Create a KinD Cluster:

kind create cluster
This command sets up a new Kubernetes cluster locally using Docker containers. KinD creates a single-node cluster by default, which is sufficient for most development and testing needs.

Verify your cluster is running:

kubectl get nodes
This command lists all the nodes in your Kubernetes cluster. You should see the node created by KinD, confirming your cluster is up and running.

Working with kubectl

kubectl is the command-line tool used to interact with your Kubernetes clusters. It's essential for deploying applications, inspecting and managing cluster resources, and troubleshooting issues.

Installation

If you've followed the steps to set up either Docker Desktop or KinD, you should already have kubectl installed. If not, you can install it separately:

Linux:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

Mac:

brew install kubectl

Windows:

Download the executable from the official Kubernetes site and add it to your system PATH.

Using kubectl

Once installed, kubectl allows you to perform various operations on your Kubernetes cluster. Here are a few basic commands to get you started:

  • Check Cluster Nodes:

    kubectl get nodes
    
    This command lists all nodes in the cluster, showing their status, roles, and other details.

  • Get Cluster Info:

    kubectl cluster-info
    
    This command displays information about the cluster, including the URL of the Kubernetes master and other components.

  • Deploy an Application:

    kubectl apply -f <filename>.yaml
    
    This command applies a configuration file to the cluster, creating or updating resources defined in the file.

  • Inspect Resources:

    kubectl get pods
    kubectl describe pod <pod-name>
    
    These commands list all pods in the cluster and provide detailed information about a specific pod, respectively.

Setting an Alias for kubectl

Instead of typing out kubectl for every command, many Kubernetes users set an alias for it by adding the following to their shell profile:

alias k=kubectl
This way, you can use k instead of kubectl in your commands, saving time and effort.

Tip

Using aliases can significantly speed up your workflow and reduce the chances of making typos in long commands.

Summary

Setting up a local Kubernetes cluster using Docker Desktop or KinD is a great way to get hands-on experience with Kubernetes. Both tools provide an easy and quick way to start working with Kubernetes, allowing you to experiment and learn in a controlled environment. With kubectl, you can manage your cluster and deploy applications, making it an essential tool for any Kubernetes user.