TL;DR

  • kind는 Docker 컨테이너를 노드로 사용해 로컬 Kubernetes 클러스터를 실행하며, 주된 용도는 Kubernetes 자체 테스트이고 로컬 개발 및 CI에도 활용 가능함.
  • Go와 Docker, Podman 또는 nerdctl이 설치된 환경에서는 go install sigs.k8s.io/kind@v0.33.0과 kind create cluster로 클러스터 생성 가능함.
  • kind는 클러스터 생성·이미지 빌드용 Go 패키지, 명령줄 인터페이스(CLI), 시스템 및 Kubernetes 실행용 Docker 이미지로 구성되며 각 노드는 kubeadm으로 부트스트랩됨.
  • 설치 방식은 Go 설치, Docker를 이용한 재현 가능한 빌드, 플랫폼별 안정 버전 바이너리 및 패키지 관리자를 포함하며, CI에는 안정 버전 사용이 일반적으로 권장됨.
  • 다중 노드 및 고가용성(HA) 클러스터, 소스에서의 Kubernetes 릴리스 빌드, Linux·macOS·Windows를 지원하며, CNCF 인증 Kubernetes 적합 설치 프로그램임.

kind 소개

  • kind는 Docker 컨테이너 노드를 사용해 로컬 Kubernetes 클러스터를 실행하는 도구임.
  • 주된 설계 목적은 Kubernetes 자체 테스트이며, 로컬 개발이나 지속적 통합(CI)에도 사용 가능함.
  • Go와 Docker, Podman 또는 nerdctl이 설치되어 있으면 go install sigs.k8s.io/kind@v0.33.0으로 설치한 뒤 kind create cluster를 실행해 클러스터 생성 가능함.
  • kind의 구성 요소는 클러스터 생성 및 이미지 빌드 등을 구현하는 Go 패키지, 해당 패키지 기반 명령줄 인터페이스(kind), systemd와 Kubernetes 등을 실행하도록 작성된 Docker 이미지, 그리고 개발 진행 중(WIP)인 kubetest 통합임.
  • kind는 각 노드를 kubeadm으로 부트스트랩하며, 자세한 내용은 설계 문서에서 확인 가능함.
  • kind는 아직 개발 진행 중인 프로젝트이며, 1.0 로드맵이 제공됨.

설치 및 사용

  • 전체 설치 안내는 문서에서 확인 가능함.
  • Go를 사용하는 설치 명령은 go install sigs.k8s.io/kind@v0.33.0이며, 최신 Go 사용이 권장됨. kind는 최신 안정 버전의 Go로 개발되며 정확한 버전은 .go-version에 명시됨.
  • 설치 결과물은 $(go env GOPATH)/bin에 배치됨. 설치 후 kind: command not found 오류가 발생하면 해당 디렉터리를 $PATH에 추가하거나 저장소를 복제해 make build를 실행하는 수동 설치 방법을 사용할 수 있음.
  • Go를 설치하지 않아도 make build로 Docker를 이용해 재현 가능한 빌드 가능함.
  • 안정 버전 바이너리는 릴리스 페이지에서 제공되며, 특히 CI 사용에는 일반적으로 안정 버전이 권장됨. 플랫폼에 맞는 바이너리를 내려받아 $PATH에 두는 방식임.
  • Linux 설치 옵션은 다음과 같음.
  • AMD64/x86_64: https://kind.sigs.k8s.io/dl/v0.33.0/kind-$(uname)-amd64에서 바이너리 다운로드.
  • ARM64/aarch64: https://kind.sigs.k8s.io/dl/v0.33.0/kind-$(uname)-arm64에서 바이너리 다운로드.
  • 다운로드한 kind에 실행 권한을 부여하고 /usr/local/bin/kind로 이동.
  • macOS 설치 옵션은 다음과 같음.
  • Homebrew: brew install kind 실행.
  • MacPorts: sudo port selfupdate와 sudo port install kind 실행.
  • Bash를 이용할 경우 Intel Mac용 바이너리는 https://kind.sigs.k8s.io/dl/v0.33.0/kind-darwin-amd64, M1/ARM Mac용 바이너리는 https://kind.sigs.k8s.io/dl/v0.33.0/kind-darwin-arm64에서 다운로드한 뒤 실행 권한을 부여하고 $PATH에 있는 디렉터리로 이동.
  • Windows 설치 옵션은 다음과 같음.
  • AMD64 바이너리는 https://kind.sigs.k8s.io/dl/v0.33.0/kind-windows-amd64에서 다운로드한 뒤 $PATH에 있는 디렉터리로 이동하고 파일명을 kind.exe로 설정.
  • Chocolatey 패키지: kind 패키지를 통한 choco install kind 실행.
  • kind 사용에는 Docker 설치가 필요하며 Docker 실행 후 kind create cluster로 클러스터 생성, kind delete cluster로 클러스터 삭제 가능함.
  • Kubernetes 소스에서 클러스터를 만들려면 Kubernetes 저장소를 $(go env GOPATH)/src/k8s.io/kubernetes에 복제한 뒤 kind build node-image로 노드 이미지를 빌드하고 kind create cluster --image kindest/node:latest로 클러스터 생성.
  • 다중 노드 클러스터와 기타 고급 기능은 설정 파일로 구성 가능하며, 추가 사용법은 문서 또는 kind [command] --help에서 확인 가능함.

커뮤니티

  • 버그, 기능 요청 및 기타 문제는 Kubernetes Slack의 #kind 채널, 저장소 이슈 등록 또는 Kubernetes SIG-Testing 메일링 리스트를 통해 전달 가능함.
  • 현재 유지 관리자는 @aojea, @BenTheElder, @stmcginnis임.
  • 기여 요청은 환영되며, 새 기능을 계획 중이면 먼저 이슈를 등록해 논의하는 방식임.
  • 시작할 작업을 찾는 경우 이슈 트래커의 도움이 필요한 이슈를 확인하거나 논의 요청 가능함.
  • 관련 자료로 기여자 안내와 Kubernetes 커뮤니티 페이지가 있음.

kind를 사용하는 이유

  • 다중 노드 및 고가용성(HA) 클러스터 지원.
  • 사전 게시된 빌드뿐 아니라 make, Bash 또는 Docker를 사용해 소스에서 Kubernetes 릴리스 빌드 지원.
  • Linux, macOS 및 Windows 지원.
  • CNCF 인증 Kubernetes 적합 설치 프로그램임.

행동 강령

  • Kubernetes 커뮤니티 참여에는 Kubernetes 행동 강령이 적용됨.