WSL2에서 kind로 쿠버네티스 구축하기

2022. 9. 21. 09:17[개발] 지식/Kubernetes

kind 설치

$ curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.10.0/kind-linux-amd64 --insecure
  • -L, -location : 서버 응답이 3XX로 와서 페이지가 이동된 걸로 판단된 경우, 해당 페이지로 다시 요청을 보낸다.
  • -o : 응답을 stdout이 아닌 file로 받는다.
  • --insecure : SSL 무시(선택사항)
$ chmod -x ./kind

실행권한을 부여한다.

$ sudo mv ./kind /usr/local/bin/

전역으로 사용할 수 있도록 /usr/local/bin/ 으로 이동시킨다.

Kubernetes Cluster 생성

1. yaml 파일 작성

apiVersion: kind.x-k8s.io/v1alpha4
kind: Cluster
nodes:
- role: control-plane
  image: kindest/node:v1.18.15
- role: control-plane
  image: kindest/node:v1.18.15
- role: control-plane
  image: kindest/node:v1.18.15
- role: worker
  image: kindest/node:v1.18.15
- role: worker
  image: kindest/node:v1.18.15
- role: worker
  image: kindest/node:v1.18.15

2. cluster 생성

$ kind create cluster --config kind.yaml --name kindcluster

설정파일 kind.yaml을 사용하여 kindcluster라는 이름의 cluster를 생성.

Creating cluster "kindcluster" ...
 ✓ Ensuring node image (kindest/node:v1.18.15) 🖼
 ✓ Preparing nodes 📦 📦 📦 📦 📦 📦
 ✓ Configuring the external load balancer ⚖️
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
 ✓ Joining more control-plane nodes 🎮
 ✓ Joining worker nodes 🚜
Set kubectl context to "kind-kindcluster"
You can now use your cluster with:

kubectl cluster-info --context kind-kindcluster

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

블라 블라… cluster 생성 완료.

3. kubectl context 전환

$ kubectl config use-context kind-kindcluster

kubectl의 컨텍스트를 방금 생성한 kind-cluster로 전환한다.

4. 확인

$ kubectl get nodes

호스트에 기동 중인 node 확인

kindcluster-control-plane    Ready    master   7m51s   v1.18.15
kindcluster-control-plane2   Ready    master   7m22s   v1.18.15
kindcluster-control-plane3   Ready    master   6m50s   v1.18.15
kindcluster-worker           Ready    <none>   6m32s   v1.18.15
kindcluster-worker2          Ready    <none>   6m33s   v1.18.15
kindcluster-worker3          Ready    <none>   6m32s   v1.18.15
$ docker container ls

도커 컨테이너 확인

70ec38b68aef   kindest/haproxy:v20200708-548e36db   "/docker-entrypoint.…"   11 minutes ago   Up 11 minutes   127.0.0.1:40753->6443/tcp   kindcluster-external-load-balancer
2c30df6b8f66   kindest/node:v1.18.15                "/usr/local/bin/entr…"   12 minutes ago   Up 11 minutes                               kindcluster-worker
78e0cc2439f8   kindest/node:v1.18.15                "/usr/local/bin/entr…"   12 minutes ago   Up 11 minutes                               kindcluster-worker2
07bc4d701db5   kindest/node:v1.18.15                "/usr/local/bin/entr…"   12 minutes ago   Up 11 minutes   127.0.0.1:35967->6443/tcp   kindcluster-control-plane
c4b367571ba2   kindest/node:v1.18.15                "/usr/local/bin/entr…"   12 minutes ago   Up 11 minutes   127.0.0.1:39939->6443/tcp   kindcluster-control-plane3
bddefb55758e   kindest/node:v1.18.15                "/usr/local/bin/entr…"   12 minutes ago   Up 11 minutes   127.0.0.1:46035->6443/tcp   kindcluster-control-plane2
f3671ce374bb   kindest/node:v1.18.15                "/usr/local/bin/entr…"   12 minutes ago   Up 11 minutes                               kindcluster-worker3

도커 컨테이너가 각각 node 역할을 하며, 쿠버네티스 마스터의 이중화 구성을 위해 사용된 HAProxy도 확인 가능.

Cluster 삭제

$ kind delete cluster --name kindcluster

사용하지 않는 kind 클러스터는 위와 같이 삭제.

<