오늘은 Minikube를 활용하여, Kubernetes 핵심 개념에 대해서 알아보겠습니다. 이를 위해 오늘은 먼저 간단하게 로컬 환경을 구축해보겠습니다. Mac을 기준으로 설명합니다.
Minikube란
Minikube는 로컬 환경에서 Kubernetes 클러스터를 쉽게 실행할 수 있도록 도와주는 도구입니다. 주로 개발자들이 로컬 머신에서 Kubernetes를 학습하거나 개발용으로 테스트할 때 사용됩니다. Minikube는 가상 머신(VM)이나 컨테이너를 사용하여 Kubernetes 클러스터를 실행하며, Kubernetes 클러스터의 주요 구성 요소인 API 서버, Controller Manager, Scheduler 등도 포함하여 실제 Kubernetes 환경과 유사한 환경을 제공합니다.
명령형 구성
먼저 아래 예제에서 간단하게 명령형 구성을 통해, K8s 클러스터 생성하고 웹 서버인 nginx Pod 띄우고 상태를 확인해보겠습니다.
# minikube 설치 후 실행 (macOS 기준)
brew install minikube
minikube start
brew로 빠르게 설치하고 설치가 완료되면 로컬에서 구동시켜 줍니다. 클러스터를 관리하는 역할을 담당하는 마스터를 kubectl이란 CLI 도구를 통해 명령형 구성을 처리해줍니다.
# nginx Pod 생성
kubectl run nginx --image=nginx --port=80
# 상태 확인
kubectl get pods # 상태 조회
kubectl describe pod nginx # 상세 정보 조회
kubectl logs nginx # 로그 확인
80 포트로 접속하면 nginx가 정상적으로 뜨는 것을 확인할 수 있습니다.
선언적 구성 : YAML 파일을 활용하자
앞서 명령형 구성했던 것을 선언적 구성으로 변환해보겠습니다.
# nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
apply는 단순한 replace가 아니라, 변경 사항만 반영해줍니다.
kubectl apply -f nginx-pod.yaml
kubectl get pod nginx
kubectl delete -f nginx-pod.yaml
이와 같이 선언적 구성을 하면, 명령형 구성에 비해 여러 장점이 있습니다.
- 원하는 상태(Desired State)를 기준으로 시스템이 자동 조정됨
- 버전 관리와 추적이 쉬움
- 자동 복구와 일관성 유지
- 변경 시 자동 패치 처리 (Smart Update)
- 자동화 도구와 잘 맞음
도커를 활용하는 데, 환경설정을 위해 Dockerfile을 사용하듯, 쿠버네티스를 사용할 때도 yaml 파일을 활용하여, 기본적인 환경 설정 정보를 저장해둘 수 있습니다.
(향후 더 양질의 글이 추가될 예정입니다)
'Infra' 카테고리의 다른 글
[Infra] Docker와 Kubernetes란 무엇인가? (0) | 2025.03.24 |
---|---|
간단하게 실습하며 배우는 Kubernetes와 Terraform (1) 로컬 Kubernetes 클러스터에 웹 서버 배포 자동화하기 (0) | 2025.02.08 |
PresignedUrl 활용한 파일 다운로드/업로드 Timeout 에러 및 성능개선기 (4) | 2024.10.22 |
댓글