DevOps / / 2024. 12. 3. 15:03

Kubernetes

Kubernetes란?

Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하기 위한 오픈소스 플랫폼입니다.
Google에서 처음 개발하고 현재는 CNCF(Cloud Native Computing Foundation)에서 관리하고 있습니다.


1. Kubernetes의 주요 개념

1.1 컨테이너 오케스트레이션

  • 여러 컨테이너를 효율적으로 관리하고 스케일링.
  • 컨테이너의 상태를 지속적으로 모니터링하고 복구.

1.2 핵심 구성 요소

  • 클러스터: Kubernetes가 애플리케이션을 배포하고 실행하는 노드 집합.
  • 마스터 노드: 클러스터를 관리하고 작업을 조정.
  • 워커 노드: 애플리케이션 컨테이너를 실행.

2. Kubernetes의 주요 개념 및 리소스

2.1 Pod

  • Kubernetes의 최소 배포 단위로, 하나 이상의 컨테이너를 포함.
  • 동일한 네트워크 및 저장소를 공유.

2.2 Service

  • Pod 간 통신을 가능하게 하고 외부 네트워크에 노출.
  • ClusterIP, NodePort, LoadBalancer와 같은 유형으로 구성.

2.3 Deployment

  • Pod와 ReplicaSet을 관리하여 애플리케이션의 원하는 상태를 유지.
  • 롤링 업데이트와 롤백을 지원.

2.4 Namespace

  • 클러스터 내에서 리소스를 논리적으로 구분.

2.5 ConfigMap과 Secret

  • ConfigMap: 환경 설정 데이터를 관리.
  • Secret: 민감한 데이터를 안전하게 저장.

3. Kubernetes의 주요 기능

3.1 자동화된 배포 및 스케일링

  • Pod를 자동으로 생성, 삭제, 배포.
  • 부하에 따라 자동으로 확장(Autoscaling).

3.2 상태 복구(Self-Healing)

  • 문제가 발생한 Pod를 자동으로 재시작하거나 교체.

3.3 서비스 디스커버리 및 로드 밸런싱

  • Pod 간 트래픽을 자동으로 분산 처리.

3.4 저장소 오케스트레이션

  • 다양한 스토리지 솔루션(NFS, Ceph, AWS EBS 등) 지원.

4. Kubernetes의 주요 명령어

  1. 클러스터 상태 확인:

    kubectl cluster-info
  2. Pod 목록 보기:

    kubectl get pods
  3. Deployment 생성:

    kubectl create deployment nginx --image=nginx
  4. Pod 삭제:

    kubectl delete pod pod-name

5. Kubernetes의 장단점

장점 단점
컨테이너화된 워크로드 관리 최적화 초기 설정과 학습 곡선이 높음
멀티 클라우드 환경 지원 리소스 사용량이 높을 수 있음
자동 복구 및 확장 지원 복잡한 구조로 디버깅이 어려울 수 있음
다양한 스토리지 및 네트워크 옵션 제공 클러스터 관리가 필요함

6. Kubernetes와 Docker의 차이점

특징 Kubernetes Docker Swarm
확장성 고도의 확장성 상대적으로 적은 확장성
배포 복잡성 높은 설정 필요 간단한 설정
상태 관리 Pod의 상태를 지속적으로 관리 기본적인 상태 관리
사용 사례 대규모 애플리케이션 소규모 애플리케이션

7. Kubernetes의 사용 사례

  1. 마이크로서비스 관리:

    • 여러 마이크로서비스의 배포 및 확장 관리.
  2. CI/CD 파이프라인:

    • 지속적 배포 환경에서 Kubernetes를 활용하여 자동화.
  3. 하이브리드 클라우드 환경:

    • 멀티 클라우드 또는 온프레미스와 클라우드 환경을 결합.

8. Kubernetes의 아키텍처

8.1 마스터 노드

  • API 서버: 모든 클러스터 명령과 통신을 관리.
  • 컨트롤러 매니저: 클러스터 상태를 유지.
  • 스케줄러: Pod를 적절한 노드에 배치.

8.2 워커 노드

  • Kubelet: 노드에서 Pod와 컨테이너를 관리.
  • Kube Proxy: 네트워크 라우팅 및 서비스 디스커버리 처리.

9. 결론

Kubernetes는 현대 애플리케이션의 배포, 관리, 확장을 자동화하는 데 필수적인 플랫폼입니다.
컨테이너 오케스트레이션의 표준으로 자리 잡으며, 대규모 분산 시스템에서 매우 유용하게 사용됩니다.

'DevOps' 카테고리의 다른 글

CI/CD  (0) 2024.12.03
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유