kind is a tool for running local Kubernetes clusters using Docker container “nodes”
kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI.
kind 란?
여러 컴퓨팅 노드를 사용하는 클러스터 환경이 아닌, 단일 노드에서 쿠버네티스를 사용하고자 할 경우 여러가지 옵션이 존재합니다. 그 중 하나인 kind 는 kubernetes in docker 의 약자로서, 말 그대로 docker 환경 위에서 k8s 를 실행하는 방식을 솔루션을 의미합니다. 또한 kind 는 Kubernetes 에서 만든 솔루션이라 안정성 측면에서 유리하다고 볼 수 있습니다.
# On macOS via Homebrew:
brew install kind
# Installing From Release Binaries,
# On Linux:
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
# If you have go (1.17+) and docker installed
go install sigs.k8s.io/kind@v0.17.0
# To create your cluster
kind create cluster
# To delete your cluster
kind delete cluster
# running example
(base) ➜ ~ kind create cluster
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.25.3) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
kubectl cluster-info --context kind-kind
(base) ➜ ~ kubectl cluster-info --context kind-kind
Kubernetes control plane is running at https://127.0.0.1:54067
CoreDNS is running at https://127.0.0.1:54067/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
# docker ps
(base) ➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
462c72836930 kindest/node:v1.25.3 "/usr/local/bin/entr…" 6 minutes ago Up 6 minutes 127.0.0.1:54067->6443/tcp kind-control-plane
(base) ➜ ~ kubectl get all --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/coredns-565d847f94-9smqc 1/1 Running 0 6m45s
kube-system pod/coredns-565d847f94-mmdlh 1/1 Running 0 6m45s
kube-system pod/etcd-kind-control-plane 1/1 Running 0 6m59s
kube-system pod/kindnet-hlqkd 1/1 Running 0 6m45s
kube-system pod/kube-apiserver-kind-control-plane 1/1 Running 0 6m59s
kube-system pod/kube-controller-manager-kind-control-plane 1/1 Running 0 7m
kube-system pod/kube-proxy-l72j8 1/1 Running 0 6m45s
kube-system pod/kube-scheduler-kind-control-plane 1/1 Running 0 7m
local-path-storage pod/local-path-provisioner-684f458cdd-544w2 1/1 Running 0 6m45s
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7m1s
kube-system service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 7m
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system daemonset.apps/kindnet 1 1 1 1 1 <none> 6m57s
kube-system daemonset.apps/kube-proxy 1 1 1 1 1 kubernetes.io/os=linux 7m
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/coredns 2/2 2 2 7m
local-path-storage deployment.apps/local-path-provisioner 1/1 1 1 6m57s
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/coredns-565d847f94 2 2 2 6m45s
local-path-storage replicaset.apps/local-path-provisioner-684f458cdd 1 1 1 6m45s