Kind란?
- 로컬 환경에서 쿠버네티스 클러스터를 구성하기 위한 툴 (클러스터 = 환경)
- go 기반이며, Docker 이미지를 기반으로 kubeadm을 사용해 클러스터를 배포
- kind 명령어를 통해 YAML을 설정(config) 으로 읽어서 클러스터를 생성
# kind 설정 파일의 최상위 타입, "쿠버네티스 클러스터를 만든다"는 선언
kind: Cluster
# kind 설정 파일의 API 버전
apiVersion: kind.x-k8s.io/v1alpha4
# 생성될 쿠버네티스 클러스터 이름
name: cwave-cluster
# 이 클러스터를 구성하는 노드들 정의
nodes:
# ==========================
# Control Plane 노드
# ==========================
- role: control-plane # 쿠버네티스 관리자 노드 (API 서버, 스케줄러 등)
# kubeadm 초기화 설정을 일부 덮어쓰기 위한 패치
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
# 이 노드에 라벨을 붙여 ingress controller가 이 노드에 올라올 수 있게 표시
node-labels: "ingress-ready=true"
# 이 노드를 실행할 Docker 이미지
image: kindest/node:v1.32.5
# 컨테이너 포트 ↔ 내 PC 포트 연결
extraPortMappings:
- containerPort: 80 # 클러스터 내부(노드) 80 포트
hostPort: 80 # 내 PC의 80 포트
protocol: TCP
- containerPort: 443 # 클러스터 내부 443 포트
hostPort: 443 # 내 PC의 443 포트
protocol: TCP
# ==========================
# Worker 노드 1
# ==========================
- role: worker # 실제 애플리케이션(Pod)을 실행하는 노드
image: kindest/node:v1.32.5
# ==========================
# Worker 노드 2
# ==========================
- role: worker # 애플리케이션 확장/분산을 위한 두 번째 워커 노드
image: kindest/node:v1.32.5
# ==========================
# 클러스터 네트워크 설정
# ==========================
networking:
# Service(ClusterIP)가 사용할 IP 대역, kube-proxy가 내부 가상 IP로 트래픽 분산할 때 사용
serviceSubnet: "10.120.0.0/16"
# Pod들이 할당받을 IP 대역, CNI 플러그인이 Pod 생성 시 이 범위에서 IP 할당
podSubnet: "10.110.0.0/16"
명령어
# 클러스터 생성
kind create cluster --config ./파일명
# 삭제
kind delete cluster --name cwave-cluster
# 클러스터 접속 정보 확인
kind get kubeconfig --internal --name cwave-cluster
절대 잊으면 안 되는 사실
- 컨테이너는 휘발성
- 데이터는 반드시 외부 스토리지
| 개념 | 역할 |
| PV | 실제 저장소 |
| PVC | “이만큼 필요해요”라는 요청 |
| Pod | PVC를 마운트해서 사용 |
'K8s' 카테고리의 다른 글
| K8s_Cloudwave: ConfigMap & Secret (0) | 2026.01.12 |
|---|---|
| k8s_cloudwave: 볼륨 (1) | 2026.01.09 |
| K8s_Cloudwave: K8s 기본 리소스 (0) | 2026.01.09 |
| K8s_Cloudwave: Terraform 활용 EKS 생성 (0) | 2026.01.09 |
| K8s-Cloudwave: 쿠버네티스 기초 (0) | 2026.01.08 |