Set up or tear down a Kubernetes cluster with a single command. Follows the official kubeadm installation guide. Distro auto-detection means the same command works on Ubuntu, Rocky Linux, Arch, Alpine, and more.
Supports single-node, multi-node, and HA (high availability) clusters with kube-vip. Proxy mode, CRI (containerd/CRI-O), version pinning, and many other options are fully configurable.
curl -fsSL https://github.com/MuNeNiCK/setup-k8s/raw/main/setup-k8s.sh | sudo sh -s -- initcurl -fsSL https://github.com/MuNeNiCK/setup-k8s/raw/main/setup-k8s.sh | sudo sh -s -- \
join \
--join-token <token> \
--join-address <address> \
--discovery-token-hash <hash>curl -fsSL https://github.com/MuNeNiCK/setup-k8s/raw/main/setup-k8s.sh | sh -s -- \
deploy \
--control-planes root@192.168.1.10 \
--workers root@192.168.1.11,root@192.168.1.12curl -fsSL https://github.com/MuNeNiCK/setup-k8s/raw/main/setup-k8s.sh | sh -s -- \
deploy \
--control-planes root@192.168.1.10,root@192.168.1.11,root@192.168.1.12 \
--workers root@192.168.1.20 \
--ha-vip 192.168.1.100curl -fsSL https://github.com/MuNeNiCK/setup-k8s/raw/main/setup-k8s.sh | sudo sh -s -- cleanup --force| Document | Description |
|---|---|
| Documentation Index | Full docs map and local preview instructions |
| Quick Start | Minimal init, join, deploy, HA, status, and cleanup commands |
| Installation | Local init/join examples, preflight checks, prerequisites |
| Remote Deploy | Multi-node deployment from an orchestrator over SSH |
| Configuration | Runtime, proxy, swap, generic install, kubeadm, and SSH settings |
| Operations | Status, logging, diagnostics, health checks, and resume behavior |
| Option Reference | All setup-k8s.sh options |
| Troubleshooting | Common issues and distribution-specific notes |
- Issues and feature requests: Open an issue in the repository
- Documentation updates: Submit a pull request
See Supported Distros for tested versions, status meanings, and known limitations.