Available Commands: cluster Manage cluster(s) completion Generate completion scripts for [bash, zsh, powershell | psh] help Help about any command image Handle container images. kubeconfig Manage kubeconfig(s) node Manage node(s) version Show k3d and default k3s version
Flags: -h, --helphelpfor k3d --verbose Enable verbose output (debug logging) --version Show k3d and default k3s version
Use "k3d [command] --help"for more information about a command.
Available Commands: create Create a new cluster delete Delete cluster(s). list List cluster(s) start Start existing k3d cluster(s) stop Stop existing k3d cluster(s)
Flags: -h, --helphelpfor cluster
Global Flags: --verbose Enable verbose output (debug logging)
Use "k3d cluster [command] --help"for more information about a command
$ k3d cluster create -s 3 INFO[0000] Created network 'k3d-k3s-default' INFO[0000] Created volume 'k3d-k3s-default-images' INFO[0000] Creating initializing server node INFO[0000] Creating node 'k3d-k3s-default-server-0' INFO[0009] Creating node 'k3d-k3s-default-server-1' INFO[0010] Creating node 'k3d-k3s-default-server-2' INFO[0011] Creating LoadBalancer 'k3d-k3s-default-serverlb' INFO[0018] Cluster 'k3s-default' created successfully! INFO[0018] You can now use it like this: kubectl cluster-info
創建完畢後,我們馬上透過 docker 指令來觀察,可以觀察到的確有 docker container 被創立起來,不過數量卻是比 server 還要多一個,主要是用來當作 load-balancer 使用
1 2 3 4 5 6
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5903d159c73 rancher/k3d-proxy:v3.0.1 "/bin/sh -c nginx-pr…" 42 minutes ago Up 42 minutes 80/tcp, 0.0.0.0:44429->6443/tcp k3d-k3s-default-serverlb aaa0cd077a51 rancher/k3s:v1.18.6-k3s1 "/bin/k3s server --t…" 42 minutes ago Up 42 minutes k3d-k3s-default-server-2 636968375fd2 rancher/k3s:v1.18.6-k3s1 "/bin/k3s server --t…" 42 minutes ago Up 42 minutes k3d-k3s-default-server-1 5bfb8b1c64bb rancher/k3s:v1.18.6-k3s1 "/bin/k3s server --c…" 43 minutes ago Up 43 minutes k3d-k3s-default-server-0
存取 Kubernetes
為了存取 Kubernetes,我們都會需要準備一份 KUBECONFIG 裡面描述 API Server 的位置,以及使用到的 Username 等資訊,這部分 k3d 也有提供相關的指令來處理 KUBECONFIG
$ k3d node create --role server hwchiu-test $ k3d node list NAME ROLE CLUSTER STATUS k3d-hwchiu-test-0 server k3s-default running k3d-k3s-default-server-0 server k3s-default running k3d-k3s-default-server-1 server k3s-default running k3d-k3s-default-server-2 server k3s-default running k3d-k3s-default-serverlb loadbalancer k3s-default running $ KUBECONFIG=~/.k3d/kubeconfig-k3s-default.yaml kubectl get nodes NAME STATUS ROLES AGE VERSION k3d-k3s-default-server-0 Ready master 51m v1.18.6+k3s1 k3d-k3s-default-server-2 Ready master 51m v1.18.6+k3s1 k3d-k3s-default-server-1 Ready master 51m v1.18.6+k3s1 k3d-hwchiu-test-0 Ready master 9s v1.18.6+k3s1
$ kind kind creates and manages local Kubernetes clusters using Docker container 'nodes'
Usage: kind [command]
Available Commands: build Build one of [base-image, node-image] completion Output shell completion code for the specified shell (bash or zsh) create Creates one of [cluster] delete Deletes one of [cluster] export Exports one of [kubeconfig, logs] get Gets one of [clusters, nodes, kubeconfig] help Help about any command load Loads images into nodes version Prints the kind CLI version
Flags: -h, --helphelpfor kind --loglevel string DEPRECATED: see -v instead -q, --quiet silence all stderr output -v, --verbosity int32 info log verbosity --version version for kind
Use "kind [command] --help"for more information about a command.
$ kind create cluster --config kind.yaml Creating cluster "kind" ... ✓ Ensuring node image (kindest/node:v1.17.0) 🖼 ✓ Preparing nodes 📦 📦 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹️ ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 ✓ Joining worker nodes 🚜 Set kubectl context to "kind-kind" You can now use your cluster with:
kubectl cluster-info --context kind-kind
Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂
創建完畢後,直接使用 docker ps 來觀察結果
1 2 3 4 5
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 97d7d804ea75 kindest/node:v1.17.0 "/usr/local/bin/entr…" 4 minutes ago Up 4 minutes kind-worker2 9085118d47b3 kindest/node:v1.17.0 "/usr/local/bin/entr…" 4 minutes ago Up 4 minutes 127.0.0.1:32768->6443/tcp kind-control-plane b9eedb6d5f38 kindest/node:v1.17.0 "/usr/local/bin/entr…" 4 minutes ago Up 4 minutes kind-worker
$ kubectl get nodes NAME STATUS ROLES AGE VERSION kind-control-plane Ready master 13m v1.17.0 kind-worker Ready <none> 12m v1.17.0 kind-worker2 Ready <none> 12m v1.17.0