[k8s] macOS kind 로컬 클러스터 구성

A ship in a bottle

kind(kubernetes in docker)는 로컬에서 쿠버네티스 클러스터를 쉽게 구성할 수 있게 해주는 도구다.

노드 이미지(kindest/node)를 사용해 도커 컨테이너 하나당 노드 하나로 구성하는 식으로 되어 있으며, 멀티 노드로 구성된 클러스터도 간단히 만들 수 있다.

설치

  • docker
  • kubectl
  • kind

사용법

$ kind create cluster

Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.26.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

Not sure what to do next? 😅  Check out https://kind.sigs.k8s.io/docs/user/quick-start/

위 명령어로 로컬 쿠버네티스를 생성할 수 있고, 기본적으로 control-plane (master node)만 생성된다.

# three node (two workers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
kind-example-config.yaml

kind는 yaml 파일로 클러스터 설정을 관리할 수 있고, 멀티노드로 구성된 클러스터를 만들고 싶다면 위처럼 config 파일을 만든 뒤, kind create cluster --config kind-example-config.yaml 처럼 클러스터 생성시 config 플래그를 넣으면 된다.

기타

❯ kind completion

Outputs kind shell completion for the given shell (bash or zsh)
This depends on the bash-completion binary.  Example installation instructions:
# for bash users
	$ kind completion bash > ~/.kind-completion
	$ source ~/.kind-completion

# for zsh users
	% kind completion zsh > /usr/local/share/zsh/site-functions/_kind
	% autoload -U compinit && compinit
# or if zsh-completion is installed via homebrew
    % kind completion zsh > "${fpath[1]}/_kind"
# or if you use oh-my-zsh (needs zsh-completions plugin)
	% mkdir $ZSH/completions/
	% kind completion zsh > $ZSH/completions/_kind

# for fish users
	% kind completion fish > ~/.config/fish/completions/kind.fish

Additionally, you may want to output the completion to a file and source in your .bashrc
Note for zsh users: [1] zsh completions are only supported in versions of zsh >= 5.2

kind는 shell completion을 제공하는데, 쉘(bash, zsh, fish) 또는 패키지매니저에 따라 설정 방법이 다르니 kind completion 설명중 자신의 환경에 맞는 방법을 쓰면 된다.

Reference