쿠버네티스 사용 방법
쿠버네티스 사용 방법
쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포, 관리, 확장하는 오픈소스 플랫폼으로, 구글에서 처음 개발되었으며 현재는 CNCF(Cloud Native Computing Foundation)에서 관리하고 있습니다. 이 글에서는 쿠버네티스를 사용하는 방법과 주요 기능, 설치 방법, 배포, 확장, 그리고 문제 해결 방법 등을 다룰 것입니다.
쿠버네티스 기본 개념 이해
쿠버네티스는 여러 컴퓨터에 걸쳐 컨테이너화된 애플리케이션을 관리하고 유지하는 데 사용됩니다. 주요 구성 요소는 다음과 같습니다:
노드(Node): 노드는 쿠버네티스 클러스터를 구성하는 개별 컴퓨터입니다. 마스터 노드와 워커 노드로 나뉩니다.
팟(Pod): 팟은 쿠버네티스에서 배포 가능한 가장 작은 단위로, 하나 이상의 컨테이너를 포함할 수 있습니다.
컨트롤 플레인(Control Plane): 쿠버네티스 클러스터 전체를 관리하며 API 서버, 컨트롤러 매니저, 스케줄러 등으로 구성됩니다.
서비스(Service): 서비스는 클러스터 내에서 실행 중인 팟들을 외부에서 접속할 수 있게 해줍니다.
쿠버네티스 설치하기
쿠버네티스 설치는 여러 방법이 있지만, 로컬 환경에서는 Minikube나 Kind를 사용하는 것이 일반적입니다. 클라우드 환경에서는 GKE, EKS, AKS 등의 관리형 서비스를 사용할 수 있습니다. 아래는 간단한 Minikube를 사용한 쿠버네티스 클러스터 설치 방법입니다:
사전 준비
쿠버네티스를 설치하기 전에 Docker와 kubectl을 설치해야 합니다.
Docker 설치
sudo apt-get update sudo apt-get install docker.io sudo systemctl enable docker sudo systemctl start docker
kubectl 설치
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl
Minikube 설치 및 클러스터 생성
Minikube 설치
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 chmod +x minikube sudo mv minikube /usr/local/bin/
클러스터 시작
minikube start
설치 확인
kubectl get nodes
애플리케이션 배포하기
쿠버네티스를 통해 애플리케이션을 배포하는 방법은 다음과 같습니다:
예제 애플리케이션 배포
배포 파일 작성(deployment.yaml)
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: my-app-image ports: - containerPort: 80
서비스 파일 작성(service.yaml)
apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 80 type: NodePort
배포 적용
kubectl apply -f deployment.yaml kubectl apply -f service.yaml
배포 상태 확인
kubectl get deployments kubectl get pods kubectl get services
애플리케이션 확장
쿠버네티스는 수평 확장(horizontal scaling)을 통해 애플리케이션을 자동으로 확장할 수 있습니다. 아래는 간단한 확장 예제입니다:
애플리케이션 복제본 수 증가
kubectl scale deployment my-app --replicas=5
확장 상태 확인
kubectl get deployments kubectl get pods
모니터링 및 로깅
쿠버네티스의 모니터링과 로깅은 애플리케이션의 성능을 유지하고 문제를 해결하는 데 필수적입니다. 일반적으로 Prometheus와 Grafana를 많이 사용합니다.
Prometheus 설치:
kubectl apply -f https://github.com/prometheus-operator/prometheus-operator/blob/main/bundle.yaml
Grafana 설치 및 설정:
kubectl apply -f https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml
문제 해결
쿠버네티스를 사용하다 보면 다양한 문제를 만날 수 있습니다. 몇 가지 일반적인 문제와 해결 방법은 다음과 같습니다:
팟이 실행되지 않음:
kubectl describe pod <pod-name>
네트워크 문제:
kubectl get services kubectl describe service <service-name>
Persistent Volume 문제:
kubectl get pv kubectl describe pv <pv-name>
결론
이번 글에서는 쿠버네티스의 기본 개념부터 설치, 애플리케이션 배포, 확장, 모니터링, 로깅, 그리고 문제 해결 방법까지 다뤄보았습니다. 쿠버네티스의 다양한 기능과 활용 방법을 익히면 컨테이너화된 애플리케이션을 효과적으로 관리하고 운영할 수 있습니다. 계속해서 관련 문서와 커뮤니티를 통해 학습을 이어가며 경험을 쌓아가시기 바랍니다.


