쿠버네티스 기초

SIMWOOHYUN·2025년 5월 15일
post-thumbnail

쿠버네티스(Kubernetes) 사용 방법 정리

1. 쿠버네티스란?

쿠버네티스(Kubernetes, K8s)는 컨테이너화된 애플리케이션을 자동으로 배포하고, 스케일링하고, 운영하는 오픈소스 시스템이다.


2. 쿠버네티스 사용 방법

2.1 클러스터 구성 요소

  • Master Node (Control Plane): 클러스터를 제어함 (API Server, Scheduler, Controller Manager 등)
  • Worker Node: 실제 컨테이너가 실행되는 노드

2.2 주요 개념

  • Pod: 쿠버네티스에서 실행되는 최소 단위 (하나 이상의 컨테이너 포함)
  • Deployment: Pod의 상태를 관리 (스케일링, 업데이트 등)
  • Service: 네트워크 서비스 추상화, 클러스터 내에서의 통신을 담당
  • Volume: Pod 간 데이터 공유 및 영속성 제공

3. 서비스(Service) 운용

3.1 ClusterIP

  • 기본값, 클러스터 내부에서만 접근 가능
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

3.2 NodePort

  • 외부에서 접근 가능
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 30036

3.3 LoadBalancer

  • 클라우드에서 로드밸런서를 자동 설정

4. 포드(Pod)의 업데이트와 복구

4.1 롤링 업데이트

  • Deployment를 수정하면 자동으로 순차적으로 Pod를 교체
kubectl set image deployment/my-deployment my-container=my-image:v2

4.2 롤백

  • 업데이트 문제 시 이전 버전으로 롤백
kubectl rollout undo deployment/my-deployment

4.3 상태 확인

kubectl rollout status deployment/my-deployment

5. 서비스와 볼륨(Volumes)

5.1 EmptyDir

  • Pod가 동작하는 동안만 존재하는 임시 볼륨
volumes:
  - name: cache-volume
    emptyDir: {}

5.2 hostPath

  • 노드의 파일시스템과 연결
volumes:
  - name: host-volume
    hostPath:
      path: /data

5.3 PersistentVolume / PersistentVolumeClaim

  • 영속적인 외부 저장소와 연결 (NFS, AWS EBS 등)

PersistentVolume 예시

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-data
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

PersistentVolumeClaim 예시

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-data
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

6. 마무리

쿠버네티스를 활용하면 컨테이너의 배포, 확장, 복구, 연결 및 저장을 효율적으로 수행할 수 있다. 실무에서는 YAML 파일을 관리하면서 kubectl 명령어로 리소스를 운용한다.

참고: 모든 리소스는 kubectl apply -f <파일명>.yaml로 생성할 수 있음.

0개의 댓글