Kind 는 'Kubernetes in Docker' 의 약자로 Docker Container 혹은 호환되는 Container Engine 이 설치된 환경에서 빠르게 쿠버네티스를 테스트할 수 있는 도구입니다.
Minikube 와 다른 점은 멀티 노드 (Multi-Node) 를 지원한다는 점이고, 굉장히 빠르게 쿠버네티스를 배포할 수 있다는 장점이 있습니다. 다만, Minikube 는 기본적인 Add-On 을 제공하기 때문에 목적에 따라 Minikube 와 Kind 를 선택하여 사용하면 좋습니다.
Kind 는 'Docker in Docker' 기술을 사용하기 때문에 노드를 Docker 로 배포하고, 그 안에 Pod 를 Docker(in Docker) 로 배포합니다.
DooD (Docker Out Of Docker) vs DinD (Docker in Docker)
DooD
- 호스트의 Docker Socket 을 컨테이너에 마운트하여 컨테이너 내부에서 도커 사용
- 컨테이너 내부에서도 호스트의 도커 컨테이너 조회 가능
DinD
- 호스트의 Docker Socket 과 컨테이너 내부의 Docker Socket 은 별개
- 컨테이너 내부에서 보는 컨테이너와 호스트에서 보는 컨테이너가 다름
kind 최소 권장 사양
vCPU 4, Memory 8GB
kind 설치
MacOS 를 사용하실 경우, brew 를 통해 간편하게 설치할 수 있습니다. 아래 명령어를 통해 kind 와 함께 kubernetes 를 사용하기 위한 도구를 함께 설치해줍니다.
# 클러스터 배포
kind create cluster
# 클러스터 확인
kind get clusters
kind get nodes
# 노드 정보 확인
kubectl get node -o wide
# 파드 정보 확인
kubectl get pod -A
# 도커 컨테이너 확인
docker ps
현재 Kind 를 아무 설정 없이 기본값으로 배포했기 때문에, Control Plane 1대만 배포되는 것을 알 수 있습니다. kind 의 노드는 도커 컨테이너 1대와 1:1 매칭이 되어 존재합니다.
즉 노드가 1대일 경우 도커 컨테이너 1대, 노드가 2대일 경우 도커 컨테이너 2대로 구성됩니다.
Control Plane 1대만 존재할 경우, Pod 를 배포해도 Control Plane 에 배포되니 자유롭게 테스트하시다가 클러스터를 아래 명령어로 삭제하면 됩니다.
kind delete cluster
1.3. Kind 멀티 노드 사용과 네트워크 통신 확인
kind 의 가장 큰 장점은 멀티 노드를 사용할 수 있는 것입니다. 아래와 같은 Yaml 파일을 통해 클러스터 설정을 정의한 후, 배포를 하면 멀티노드를 간편하게 사용할 수 있습니다.