# Overview ![k3d](static/img/k3d_logo_black_blue.svg) ## What is k3d? k3d is a lightweight wrapper to run [k3s](https://github.com/rancher/k3s) (Rancher Lab's minimal Kubernetes distribution) in docker. k3d makes it very easy to create single- and multi-node [k3s](https://github.com/rancher/k3s) clusters in docker, e.g. for local development on Kubernetes. **Note:** k3d is a **community-driven project** but it's not an official Rancher (SUSE) product. **Sponsoring**: To spend any significant amount of time improving k3d, we rely on sponsorships: - [**GitHub Sponsors**: ![GitHub Sponsors](https://img.shields.io/github/sponsors/k3d-io?label=GitHub%20Sponsors&style=flat-square)](https://github.com/sponsors/k3d-io) - [**LiberaPay**: ![Liberapay patrons](https://img.shields.io/liberapay/patrons/k3d-io?label=Liberapay%20Patrons&style=flat-square)](https://liberapay.com/k3d-io) - **IssueHunt**: ??? Tip "View a quick demo" ## Learning !!! Tip "k3d demo repository: [iwilltry42/k3d-demo](https://github.com/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)](https://www.youtube.com/watch?v=hMr3prm9gDM) ## Requirements - [**docker**](https://docs.docker.com/install/) to be able to use k3d at all - Note: k3d v5.x.x requires at least Docker v20.10.5 (runc >= v1.0.0-rc93) to work properly (see [#807](https://github.com/k3d-io/k3d/issues/807)) - [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) to interact with the Kubernetes cluster ## Releases | Platform | Stage | Version | Release Date | Downloads so far | |-----------------|--------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|---| | [**GitHub Releases**](https://github.com/k3d-io/k3d/releases) | stable | [![GitHub release (latest by date)](https://img.shields.io/github/v/release/k3d-io/k3d?label=%20&style=for-the-badge&logo=github)](https://github.com/k3d-io/k3d/releases/latest) | [![GitHub Release Date](https://img.shields.io/github/release-date/k3d-io/k3d?label=%20&style=for-the-badge)](https://github.com/k3d-io/k3d/releases/latest) | ![GitHub Release Downloads](https://img.shields.io/github/downloads/k3d-io/k3d/latest/total?label=%20&style=for-the-badge) | | [**GitHub Releases**](https://github.com/k3d-io/k3d/releases) | latest | [![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/k3d-io/k3d?include_prereleases&label=%20&style=for-the-badge&logo=github)](https://github.com/k3d-io/k3d/releases) | [![GitHub (Pre-)Release Date](https://img.shields.io/github/release-date-pre/k3d-io/k3d?label=%20&style=for-the-badge)](https://github.com/k3d-io/k3d/releases) | ![GitHub Release Downloads (incl. Pre-Releases)](https://img.shields.io/github/downloads-pre/k3d-io/k3d/latest/total?label=%20&style=for-the-badge) | | [**Homebrew**](https://formulae.brew.sh/formula/k3d) | stable | [![homebrew](https://img.shields.io/homebrew/v/k3d?label=%20&style=for-the-badge)](https://formulae.brew.sh/formula/k3d) | - | - | | [**Chocolatey**](https://chocolatey.org/packages/k3d/)| stable | [![chocolatey](https://img.shields.io/chocolatey/v/k3d?label=%20&style=for-the-badge)](https://chocolatey.org/packages/k3d/) | - | - | ## Installation You have several options there: ### [:fontawesome-regular-file-code: Install Script](https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh) #### Install current latest release - wget: ```bash wget -q -O - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash ``` - curl: ```bash curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash ``` #### Install specific release Use the install script to grab a specific release (via `TAG` environment variable): - wget: ```bash wget -q -O - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | TAG=v5.0.0 bash ``` - curl: ```bash curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | TAG=v5.0.0 bash ``` ### Other Installers ??? Tip "Other Installation Methods" - [:fontawesome-solid-beer: Homebrew (MacOS/Linux)](https://brew.sh): ```bash brew install k3d ``` *Note*: The formula can be found in [homebrew/homebrew-core](https://github.com/Homebrew/homebrew-core/blob/master/Formula/k3d.rb) and is mirrored to [homebrew/linuxbrew-core](https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/k3d.rb) - [:material-arch: AUR (Arch Linux User Repository)](https://aur.archlinux.org/): ```bash yay -S rancher-k3d-bin ``` Package [rancher-k3d-bin](https://aur.archlinux.org/packages/rancher-k3d-bin/) - [:material-github: Download GitHub Release](https://github.com/k3d-io/k3d/releases) Grab a release binary from the [release tab](https://github.com/k3d-io/k3d/releases) and install it yourself - [:material-microsoft-windows: Chocolatey (Windows)](https://chocolatey.org/): `choco install k3d` *Note*: package source can be found in [erwinkersten/chocolatey-packages](https://github.com/erwinkersten/chocolatey-packages/tree/master/automatic/k3d) - [arkade](https://github.com/alexellis/arkade): `arkade get k3d` - [asdf](https://asdf-vm.com): `asdf plugin-add k3d && asdf install k3d latest` *Note*: `asdf plugin-add k3d`, then `asdf install k3d ` with ` = latest` or `5.x.x` for a specific version (maintained by [spencergilbert/asdf-k3d](https://github.com/spencergilbert/asdf-k3d)) - Others - install via go: `#!bash go install github.com/k3d-io/k3d/v5@latest` (**Note**: this will give you unreleased/bleeding-edge changes) ## Quick Start Create a cluster named `mycluster` with just a single server node: ```bash k3d cluster create mycluster ``` Use the new cluster with [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/), e.g.: ```bash kubectl get nodes ``` ??? Note "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 `#!bash $HOME/.kube/config`) and directly switch to the new context: ```bash k3d kubeconfig merge mycluster --kubeconfig-switch-context ``` ## Connect 1. Join the Rancher community on slack via [slack.rancher.io](https://slack.rancher.io/) 2. Go to [rancher-users.slack.com](https://rancher-users.slack.com) and join our channel #k3d 3. Start chatting ## Related Projects - [vscode-k3d](https://github.com/inercia/vscode-k3d/): VSCode Extension to handle k3d clusters from within VSCode - [k3x](https://github.com/inercia/k3x): a graphics interface (for Linux) to k3d. - [AbsaOSS/k3d-action](https://github.com/AbsaOSS/k3d-action): fully customizable GitHub Action to run lightweight Kubernetes clusters. - [AutoK3s](https://github.com/cnrancher/autok3s): a lightweight tool to help run K3s everywhere including k3d provider. - [nolar/setup-k3d-k3s](https://github.com/nolar/setup-k3d-k3s): setup K3d/K3s for GitHub Actions.