Kubernetes
kind(Kubernetes in Docker)
journalctl
2025. 1. 12. 15:37
개요
맥북에서 로컬 클러스터를 구축하는데 k3s, kind 중에서 어떤걸 사용할까 고민하다 kind로 결정했다.
AWS를 사용하기에는 너무 비용이 많이 들어서 로컬 클러스터에서 작업해야겠다.
kind(Kubernetes in Docker)란?
kind는 Docker 컨테이너 노드를 사용하여 로컬 Kubernetes 클러스터를 실행하기 위한 도구이다.
go(1.16+) + docker / podman이 설치되어 있으면 사용이 가능하다.
Go 설치하기 (Mac)
- Brew를 통해서 go를 설치한다.
$ brew update
$ brew install go
- go version 확인해서 정상적으로 설치되었는지 확인한다.
$ go version
go version go1.22.2 darwin/arm64
Docker 설치하기 (Mac)
- Brew를 통해서 Docker를 설치한다.
$ brew install docker --cask
- Application에서 Docker를 실행하면 Docker Desktop 화면이 나온다.
Kind 설치 및 명령어 정리
$ go install sigs.k8s.io/kind@v0.24.0
Go 명령어를 통해서 kind를 설치한다.
$ kind create cluster --name test-cluster --config config.yml --image kindest/node:v1.20.7
test-cluster 이름을 가진 클러스터를 생성한다.
- config : config.yml에 정의된 내용으로 클러스터를 생성한다.
- Kind에서 Ingress가 필요할때 config.yml 파일
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane kubeadmConfigPatches: - | kind: InitConfiguration nodeRegistration: kubeletExtraArgs: node-labels: "ingress-ready=true" extraPortMappings: - containerPort: 80 hostPort: 80 protocol: TCP - containerPort: 443 hostPort: 443 protocol: TCP
- image : 특정 쿠버네티스 버전이 필요할 경우 사용한다.
원하는 Kubernetes 버전이 있다면 docker hub에서 확인해서 사용하자.
https://hub.docker.com/r/kindest/node/tags
$ kind get kubeconfig --name test-cluster
test-cluster의 kubeconfig를 표시한다.
$ kind get clusters
kind로 생성한 클러스터 목록을 표시한다.
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kind-test-cluster kind-test-cluster kind-test-cluster
contexts를 확인하면 kind가 자동으로 등록되어있다!
후기
편리하게 로컬에서 Helm chart로 오픈소스를 설치하거나 테스트할 클러스터가 필요할때 유용하게 자주 사용할 것 같다!