-
KinD 알아보기.Kubernetes 2023. 11. 27. 23:01728x90반응형
- 목차
소개.
KinD 는 "카인드" 라고 발음되며, 로컬 머신에서 쿠버네티스를 간편하게 실행할 수 있는 도구입니다.
KinD 는 Kubernetes in Docker 의 약자이구요.
Docker 를 활용하여 쿠버네티스 환경을 구성할 수 있습니다.
쿠버네티스 클러스터 실행.
KinD 는 도커를 활용하여 쿠버네티스 클러스터를 실행하는 구조입니다.
따라서 Docker 가 실행되어 있어야합니다.
그리고 kind 라는 CLI 또한 설치되어 있어야 하며,
KinD 설치 링크를 아래에 첨부하겠습니다.
https://kind.sigs.k8s.io/docs/user/quick-start/그리고 아래와 같이 kind 의 create 명령어로 쿠버네티스 클러스터를 실행할 수 있습니다.
클러스터의 이름과 클러스터에서 사용할 노드의 이미지 또한 지정이 가능합니다.
< KinD Create Cluster >
kind create cluster --name test-cluster --image kindest/node:v1.24.0
< 출력 로그 >
Creating cluster "test-cluster" ... ✓ Ensuring node image (kindest/node:v1.24.0) 🖼 ✓ Preparing nodes 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹️ ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 Set kubectl context to "kind-test-cluster" You can now use your cluster with: kubectl cluster-info --context kind-test-cluster Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community
< 클러스터 조회하기 >
생성된 클러스터를 조회할 수 있습니다.
명령어는 아래와 같습니다.
kind get clusters
< 출력 로그 >
test-cluster
< 클러스터 삭제하기 >
클러스터를 삭제하는 방법은 아래와 같습니다.
kind delete cluster --name test-cluster
< 출력 로그 >
Deleting cluster "test-cluster" ... Deleted nodes: ["test-cluster-control-plane"]
멀티 노드 클러스터 실행하기.
2개 이상의 노드를 가지는 클러스터를 생성하기 위해서는 config 파일이 필요합니다.
< multi node cluster config >
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker - role: worker - role: worker
< 파일 저장 >
cat <<EOF> /tmp/multinode_config.yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker - role: worker - role: worker EOF
< 멀티 노드 클러스터 생성 >
kind create cluster \ --name test-cluster \ --image kindest/node:v1.24.0 \ --config /tmp/multinode_config.yaml
< 출력 로그 >
Creating cluster "test-cluster" ... ✓ Ensuring node image (kindest/node:v1.24.0) 🖼 ✓ Preparing nodes 📦 📦 📦 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹️ ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 ✓ Joining worker nodes 🚜 Set kubectl context to "kind-test-cluster" You can now use your cluster with: kubectl cluster-info --context kind-test-cluster Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂
아래와 같이 3개의 worker node 와 1개의 control plane 이 존재하게 됩니다.
Pod 생성해보기.
가볍게 NodeJS Pod 를 생성해보겠습니다.
Pod 를 생성하는 yaml 은 아래와 같습니다.
NodeJs 이미지 생성하기.
< Dockerfile >
cat <<EOF> /tmp/Dockerfile FROM node:14 WORKDIR /usr/src/app COPY app.js ./ RUN npm install EXPOSE 3000 CMD ["node", "app.js"] EOF
< 파일 생성 >
cat <<EOF> /tmp/app.js var http = require('http'); http.createServer(function (req, res) { for (var i = 0; i < 1000000; i++) { if (i % 100000 == 0) console.log(i) } res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World!'); }).listen(8080); EOF
< 도커 이미지 빌드 >
docker build -t test-nodejs:1 -f /tmp/Dockerfile /tmp/
kind load docker-image test-nodejs:1 --name test-cluster
< Pod.yaml >
cat <<EOF> /tmp/node_pod.yaml apiVersion: v1 kind: Pod metadata: name: nodejs-pod spec: containers: - name: nodejs-container image: test-nodejs:1 imagePullPolicy: Never ports: - containerPort: 8080 workingDir: /usr/src/app command: ["node", "app.js"] restartPolicy: Always EOF
< pod 생성 >
kubectl create -f /tmp/node_pod.yaml
< Pod 조회 >
kubectl get pods NAME READY STATUS RESTARTS AGE nodejs-pod 1/1 Running 0 48s
KinD Cluster 로 Docker Image Load 하기.
로컬 머신에 저장되어 있는 Docker Image 를 Kind Cluster 로 업로드할 수 있습니다.
kind load docker-image confluentinc/cp-kafka:7.4.3 --name test-cluster
Image: "confluentinc/cp-kafka:7.4.3" with ID "sha256:593b1742e91aab51f0969132af543f723617dc48d87f0f9543181f886a967091" not yet present on node "test-cluster-worker3", loading... Image: "confluentinc/cp-kafka:7.4.3" with ID "sha256:593b1742e91aab51f0969132af543f723617dc48d87f0f9543181f886a967091" not yet present on node "test-cluster-worker2", loading... Image: "confluentinc/cp-kafka:7.4.3" with ID "sha256:593b1742e91aab51f0969132af543f723617dc48d87f0f9543181f886a967091" not yet present on node "test-cluster-control-plane", loading... Image: "confluentinc/cp-kafka:7.4.3" with ID "sha256:593b1742e91aab51f0969132af543f723617dc48d87f0f9543181f886a967091" not yet present on node "test-cluster-worker", loading...
반응형'Kubernetes' 카테고리의 다른 글
Kubernetes Certificate 알아보기 (0) 2023.12.11 Kubernetes ReplicaSet 알아보기 (2) 2023.11.28 Kubernetes Ephemeral Volume (0) 2023.08.09 [Kubernetes] Service 이해하기 (0) 2023.08.01 Kubernetes Pod 이해하기 (0) 2023.07.26