This is a single-machine playground. A multi-machine playground for larger and HA clusters is WIP.
kubelet
: The primary node agent that runs on each nodekubeadm
: Cluster lifecycle management and bootstrappingkubectl
(alias: k
): Kubernetes cluster management and debuggingnerdctl
: Docker-compatible CLI for containerd
krew
: kubectl
plugin manager for extending functionalityIf you want to quickly set up a working cluster, use the automated script:
/opt/playground/init.sh --remove-taint
⚠️ When none
is selected as the network addon, the initialization script will skip installing any CNI plugin.
This script performs all the steps below automatically. Continue reading to understand what happens under the hood.
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl
Access# Set up kubectl for the current user
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# Verify cluster access
kubectl cluster-info
kubectl get nodes
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
# Wait for all pods to be ready
kubectl wait --for=condition=Ready pods --all -n kube-flannel --timeout=300s
# Remove taint to allow pods on control plane node
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
# Verify node is ready and schedulable
kubectl get nodes
# Check all system pods are running
kubectl get pods --all-namespaces
# Deploy a test application
kubectl create deployment podinfo --image=ghcr.io/stefanprodan/podinfo --port=9898
kubectl expose deployment podinfo --port=9898 --type=NodePort
# Check the deployment
kubectl get pods,services
The easiest way to reset the cluster is terminating the playground and starting a new one.
That being said, it's a good idea to learn how to reset the cluster manually.
First, reset the cluster itself using kubeadm
:
kubeadm reset -f
Stop kubelet
:
systemctl stop kubelet
Then cleanup any CNI config created by the network addon you installed:
rm -rf /etc/cni/net.d/*.conflist
Delete any CNI interfaces created by the network addon:
ip link delete cni0
# For flannel
ip link delete flannel.1
Happy learning! 🚀