본문 바로가기

쿠버네티스

KIND로 WSL 2에서 k8s 실행해보기

0. 개요

KIND(Kubernetes IN Docker)는 Docker의 컨테이너를 노드로 사용해 k8s를 쉽게 구축할 수 있도록 하는 도구입니다.

로컬에서 간단하게 k8s를 구축하여 테스트 하는 용도로 주요 사용합니다.

이 글은 WSL 2 환경에서 k8s 구축 및 nginx를 배포하여 연결하는 실습을 해 보겠습니다.

 

1. KIND로 k8s 구축

KIND를 설치하는 명령어는 아래와 같습니다.

[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.21.0/kind-linux-amd64

 

쉽게 사용하기 위해 파일 권한 변경 및 파일 이동을 해 보겠습니다.

$ chmod +x ./kind
$ sudo mv ./kind /usr/local/bin/kind

 

이제 KIND로 k8s를 구축하겠습니다.

먼저 k8s 구축을 위한 yaml 파일을 만듭니다.

// custom-k8s.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
    extraPortMappings:
      - containerPort: 30000
        hostPort: 30000
        protocol: TCP
  - role: worker
  - role: worker

 

해당 파일을 사용해 k8s를 구축하는 명령어는 아래와 같습니다.

kind create cluster --name custom-k8s --config=custom-k8s.yaml

 

위에서 KIND는 도커 컨테이너를 노드로 사용한다고 언급했었습니다.

그림과 같이 노드의 개수만큼 컨테이너가 생성된 것을 알 수 있습니다.

 

2. nginx 배포하기

k8s에서 기본 배포 단위는 디플로이먼트입니다.

nginx를 디플로이먼트로 배포하겠습니다.

kubectl create deployment nginx --image=nginx --port=80


만들어진 nginx는 아래 명령어를 통해 어느 워커 노드에 배포되었는지 확인할 수 있습니다.

kubectl get pods -o wide

 

k8s에서는 배포한 서버를 서비스를 통해 노출해야합니다.

nginx 서버를 노출할 서비스를 만들겠습니다.

kubectl create service nodeport nginx --tcp=80:80 --node-port=30000

 

클러스터를 만들 때 사용한 custom-k8s.yaml에서 30000번 노드 포트를 노출했기 때문에, 똑같이 30000번 노드 포트를 사용했습니다.

서비스 정보는 아래 명령어로 조회할 수 있습니다.

kubectl get service

 

nginx를 배포 및 노출을 완료했으니 host에서도 접속할 수 있습니다.

 

실습은 끝났으니 아래 명령어로 클러스터를 삭제하시면됩니다.

kind delete cluster --name custom-k8s