Project challenges / verified progress
Beacon: give it somewhere to live

The engineering notebook

Make a cluster local

How can a real Kubernetes cluster run on a laptop without renting cloud infrastructure?

Loading statusStage 2 of 10

  • Workspace not ready
  • Agent not ready
Focus25:00
A small focus ritual

0 focus sessions completed. Every fourth session offers a longer break. Start each phase when you are ready.

Study time never unlocks verified lesson progress.

Loading...

Loading verified progress...

Loading GitHub account...
Phase 1 — Learn the control plane

Step 01 of 06

Learn the concept

Kubernetes has a reputation for requiring a cloud account and a procurement meeting. Not for this course. kind runs the same API machinery locally, so every mistake costs seconds and disk space, not a surprise line item.

A CLUSTER ON ONE LAPTOPkubectlclient and current contextAPI servervalidates every requestControl planescheduler and controllerskind nodea container acting as a nodeDockerruns the node containers
kind runs Kubernetes nodes as containers. The API server, scheduler and controllers are real Kubernetes components; the hardware bill is still your laptop battery.
Step 01

The ideas this is made of

A node is the machine Kubernetes can place work on

In a cloud cluster, a node is usually a virtual machine. In kind, a node is a Docker container running the pieces a Kubernetes node needs, including kubelet and a container runtime. That sounds fake until you remember the Kubernetes API is the same. For learning, it is perfect: real scheduling semantics, zero AWS bill.

The control plane decides; workers run

The API server receives requests. The scheduler chooses a node for unscheduled Pods. Controllers create and repair lower-level objects. kubelet, running on each node, makes the chosen containers exist. A single-node kind cluster may put these roles in one container, but the responsibilities are still separate and the words matter.

kubeconfig tells kubectl which cluster you mean

kubectl reads kubeconfig, usually from ~/.kube/config, to find clusters, users and contexts. A context combines a cluster, credentials and optional namespace. Many production mistakes start as kubectl pointed at the wrong context. Read kubectl config current-context before touching anything expensive. Here, nothing is expensive.

Describe and events are the first smoke trail

kubectl get tells you the headline. kubectl describe shows scheduling decisions, probe failures, image pull errors and recent Events attached to the object. Events are short-lived cluster notes such as FailedScheduling, Pulled, BackOff and Unhealthy. When something is wrong, read them before rewriting YAML.

A context is a named target
kubectl config get-contexts
kubectl config use-context kind-beacon
kubectl config current-context

The command does not create a cluster. It changes which API server future kubectl commands speak to. That difference has saved more jobs than bravery has.

The first commands to reach for

CommandWhat it tells youWhen to use it

kubectl get

Names, status, age

Start here

kubectl describe

Spec, status, events

When status is not enough

kubectl logs

Container stdout/stderr

When the process started

kubectl get events

Recent cluster actions

When scheduling or probes fail

kubectl config current-context

Target cluster

Before changing anything

What these are called on the job

  • kind — Kubernetes in Docker; a local cluster whose nodes are containers.

  • Node — A machine, virtual machine or kind container that can run Pods.

  • Context — The kubeconfig entry selecting a cluster, user and optional namespace.

  • Event — A timestamped cluster observation attached to an object, often the fastest clue.