FAQ
General
What is k8s-provisioner?
k8s-provisioner is a CLI tool written in Go that automates the creation of Kubernetes clusters for lab and learning environments. It uses VirtualBox and Vagrant to create VMs and provisions a complete Kubernetes stack.
What platforms are supported?
- macOS (Intel and Apple Silicon)
- Linux (x64 and ARM64)
- Windows (x64)
How much RAM do I need?
Minimum 16 GB, recommended 32 GB. The default configuration uses 14 GB for the VMs.
Kubernetes
What Kubernetes version is used?
Kubernetes 1.32 with CRI-O as the container runtime.
Can I change the number of nodes?
Yes, edit vagrant/settings.yaml to add or remove nodes.
How do I access the cluster from my host?
vagrant ssh controlplane -c 'sudo cat /etc/kubernetes/admin.conf' > ~/.kube/config-lab
export KUBECONFIG=~/.kube/config-lab
kubectl get nodes
Components
Why Calico instead of Flannel?
Calico provides network policies and better performance for production-like environments.
Why CRI-O instead of containerd?
CRI-O is a lightweight, Kubernetes-native container runtime. Both work well, but CRI-O is more focused on Kubernetes.
Can I disable Istio?
Currently, Istio is installed by default. You can modify the provisioning scripts to skip it.
Troubleshooting
VMs won’t start
Check VirtualBox is installed and working:
VBoxManage --version
Cluster provisioning fails
Check the logs:
vagrant ssh controlplane
sudo journalctl -u kubelet -f
MetalLB IPs not reachable
Enable promiscuous mode:
k8s-provisioner vbox promisc