# k3d - k3s in docker

A lightweight alternative to KinD for local development.

## Install and run

1. You need docker installed.
2. Just run:

   `curl -s https://api.github.com/repos/zeerorg/k3s-in-docker/releases/latest | grep "browser_download_url.*k3d\"" | cut -d : -f 2,3 | tr -d \" | wget -qi - -O k3d && ./k3d create`

3. If you have rust toolchain installed, you can install it using: `cargo install k3d && k3d create`

## Advantages over [KinD]https://github.com/kubernetes-sigs/kind

1. Supports arm64 and armhf
2. Fast boot time
3. Supports starting and stopping without losing previous state
4. Lightweight compared to KinD

## Usage

Normal flow:

1. `k3d create`
2. `export KUBECONFIG=$(k3d get-kubeconfig)`
3. `kubectl get pods --all-namespaces`
4. If you want to delete the cluster do: `kubectl delete`

If port 6443 is occupied you can specify a different port in first step: `k3d create -p 10001`. This will create a docker container named k3s_default with port 10001 exposed.

You can specify a different name for cluster with `k3s create -n <name>`, but then keep in mind to do `k3d get-kubeconfig -n <name>` when getting kubeconfig.

```text
k3d 0.1.0
Rishabh Gupta <r.g.gupta@outlook.com>
Run k3s in Docker

USAGE:
    k3d [SUBCOMMAND]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    check-tools       Check docker running
    create            Create a single node k3s server
    delete            Delete cluster
    get-kubeconfig    get kubeconfig.yaml location
    help              Prints this message or the help of the given subcommand(s)
    list              List all clusters
    start             Start a stopped cluster
    stop              Stop a cluster
```