What is k3d?¶
k3d is a lightweight wrapper to run k3s (Rancher Lab’s minimal Kubernetes distribution) in docker.
k3d makes it very easy to create single- and multi-node k3s clusters in docker, e.g. for local development on Kubernetes.
Note: k3d is a community-driven project, that is supported by Rancher (SUSE) and it’s not an official Rancher (SUSE) product.
View a quick demo
k3d demo repository: iwilltry42/k3d-demo
Featured use-cases include:
- hot-reloading of code when developing on k3d (Python Flask App)
- build-deploy-test cycle using Tilt
- full cluster lifecycle for simple and multi-server clusters
- Proof of Concept of using k3d as a service in Drone CI
- Rancher Meetup - May 2020 - Simplifying Your Cloud-Native Development Workflow With K3s, K3c and K3d (YouTube)
- docker to be able to use k3d at all
- Note: k3d v5.x.x requires at least Docker v20.10.4 to work properly
- kubectl to interact with the Kubernetes cluster
You have several options there:
Install current latest release¶
wget -q -O - https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash
curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash
Install specific release¶
Use the install script to grab a specific release (via
TAG environment variable):
wget -q -O - https://raw.githubusercontent.com/rancher/k3d/main/install.sh | TAG=v5.0.0 bash
curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | TAG=v5.0.0 bash
Other Installation Methods
brew install k3d
choco install k3d
Note: package source can be found in erwinkersten/chocolatey-packages
arkade get k3d
asdf plugin-add k3d && asdf install k3d latest
asdf plugin-add k3d, then
asdf install k3d <tag>with
<tag> = latestor
5.x.xfor a specific version (maintained by spencergilbert/asdf-k3d)
- install via go:
go install github.com/rancher/[email protected](Note: this will give you unreleased/bleeding-edge changes)
- install via go:
Create a cluster named
mycluster with just a single server node:
k3d cluster create mycluster
Use the new cluster with
kubectl get nodes
Getting the cluster’s kubeconfig (included in
k3d cluster create)
Get the new cluster’s connection details merged into your default kubeconfig (usually specified using the
KUBECONFIG environment variable or the default path
$HOME/.kube/config) and directly switch to the new context:
k3d kubeconfig merge mycluster --kubeconfig-switch-context
- vscode-k3d: VSCode Extension to handle k3d clusters from within VSCode
- k3x: a graphics interface (for Linux) to k3d.
- AbsaOSS/k3d-action: fully customizable GitHub Action to run lightweight Kubernetes clusters.
- AutoK3s: a lightweight tool to help run K3s everywhere including k3d provider.
- nolar/setup-k3d-k3s: setup K3d/K3s for GitHub Actions.