Go to file
2020-04-27 14:14:22 +02:00
.github/ISSUE_TEMPLATE add docker version 2019-05-21 23:04:12 +02:00
cmd deleteCluster: remove cluster details from kubeconfig 2020-04-24 14:44:21 +02:00
docs docs: use awesome-pages structure and add content 2020-04-27 14:14:22 +02:00
pkg getLogs: return error if container is not in running state to avoid long unnecessary wait 2020-04-26 17:17:14 +02:00
proxy Proxy: deploy a configurable nginx proxy in front of the cluster 2020-04-08 17:45:27 +02:00
tests tests/e2e: add failure case for importing images 2020-04-23 11:53:34 +02:00
vendor Merge branch 'master-v3' of ssh://github.com/rancher/k3d into feature/kubeconfig-modification 2020-04-22 08:14:20 +02:00
version fix tests and add Dockerfile 2020-01-27 16:22:57 +01:00
.gitignore docs: use awesome-pages structure and add content 2020-04-27 14:14:08 +02:00
.travis.yml use go 1.14 2020-03-29 18:32:44 +02:00
Dockerfile E2E-Tests: init test for multi-master setups 2020-04-08 13:08:24 +02:00
go.mod Merge branch 'master-v3' of ssh://github.com/rancher/k3d into feature/kubeconfig-modification 2020-04-22 08:14:20 +02:00
go.sum Merge branch 'master-v3' of ssh://github.com/rancher/k3d into feature/kubeconfig-modification 2020-04-22 08:14:20 +02:00
install.sh rename and add authors 2019-04-12 07:36:59 +02:00
LICENSE cleanup and prepare for push to rancher/k3d 2020-01-05 21:16:31 +01:00
main.go cleanup and prepare for push to rancher/k3d 2020-01-05 21:16:31 +01:00
Makefile Makefile: update golangci-lint version 2020-04-23 08:06:27 +02:00
mkdocs.yml docs: use awesome-pages structure and add content 2020-04-27 14:14:08 +02:00
README.md init mkdocs 2020-04-26 19:52:26 +02:00
thoughts.md getKubeConfig: consider the KUBECONFIG env var when updating default kubeconfig 2020-04-24 07:52:23 +02:00

k3d

Build Status Go Report Card

k3s in docker

k3s is the lightweight Kubernetes distribution by Rancher: rancher/k3s

k3d creates containerized k3s clusters. This means, that you can spin up a multi-node k3s cluster on a single machine using docker.

This repository is based on @zeerorg's zeerorg/k3s-in-docker, reimplemented in Go by @iwilltry42 in iwilltry42/k3d, which got adopted by Rancher inrancher/k3d.

Requirements

Get

You have several options there:

  • via brew (homebrew/linuxbrew): brew install k3d
  • use the install script to grab the latest release:
    • wget: wget -q -O - https://raw.githubusercontent.com/rancher/k3d/master/install.sh | bash
    • curl: curl -s https://raw.githubusercontent.com/rancher/k3d/master/install.sh | bash
  • Grab a release from the release tab and install it yourself.
  • Via go: go install github.com/rancher/k3d (Note: this will give you unreleased/bleeding-edge changes)

or...

Build

  1. Clone this repo, e.g. via go get -u github.com/rancher/k3d
  2. Inside the repo run
    • 'make install-tools' to make sure required go packages are installed
  3. Inside the repo run one of the following commands
    • make build to build for your current system
    • go install to install it to your GOPATH (Note: this will give you unreleased/bleeding-edge changes)
    • make build-cross to build for all systems

Usage

Check out what you can do via k3d help

Example Workflow: Create a new cluster and use it with kubectl

  1. k3d create cluster CLUSTER_NAME to create a new single-node cluster (= 1 container running k3s)
  2. export KUBECONFIG=$(k3d get kubeconfig CLUSTER_NAME) to make kubectl to use the kubeconfig for that cluster
  3. execute some commands like kubectl get pods --all-namespaces
  4. k3d delete cluster CLUSTER_NAME to delete the default cluster

Exposing Services

If you want to access your services from the outside (e.g. via Ingress), you need to map the ports (e.g. port 80 for Ingress) using the --publish flag (or aliases). Check out the examples here.

What now?

More Information

Connect

  1. Join the Rancher community on slack via slack.rancher.io
  2. Go to rancher-users.slack.com and join our channel #k3d
  3. Start chatting