본문 바로가기

가상 머신/쿠버네티스

[ 쿠버네티스 / Kubernetes ] 쿠버네티스에 대해서 간략하게 알아보기

반응형

쿠버네티스(Kubernetes, 줄여서 K8s)는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 플랫폼입니다.
Google에서 개발하여 2014년에 오픈 소스로 공개되었고, 현재는 Cloud Native Computing Foundation(CNCF)에서 관리하고 있습니다.

1. 주요 기능

  1. 자동화된 배포 및 복구:
    • 컨테이너 애플리케이션을 자동으로 배포하고, 장애가 발생하면 자동으로 복구합니다.
    • 특정 개수의 컨테이너가 항상 실행되도록 보장합니다.
  2. 확장 및 축소:
    • 애플리케이션의 부하에 따라 컨테이너 인스턴스를 자동으로 확장하거나 축소합니다.
    • 수평적 포드 오토스케일링(Horizontal Pod Autoscaling)을 지원합니다.
  3. 서비스 디스커버리 및 로드 밸런싱:
    • 클러스터 내에서 컨테이너 간의 통신을 쉽게 할 수 있도록 DNS 이름 또는 IP 주소로 서비스를 발견할 수 있습니다.
    • 여러 인스턴스 간에 트래픽을 로드 밸런싱합니다.
  4. 스토리지 오케스트레이션:
    • 다양한 스토리지 시스템(NFS, iSCSI, 클라우드 제공자의 스토리지 등)을 자동으로 마운트하고 관리합니다.
  5. 비밀 관리 및 설정 관리:
    • 비밀(Secret)과 설정(ConfigMap)을 관리하고, 이를 애플리케이션에 안전하게 전달합니다.
  6. 롤링 업데이트 및 롤백:
    • 다운타임 없이 애플리케이션을 업데이트할 수 있습니다.
    • 문제가 발생하면 이전 버전으로 롤백할 수 있습니다.

2. 기본 구성 요소

  1. 클러스터:
    • 쿠버네티스의 기본 단위로, 하나 이상의 마스터 노드와 여러 워커 노드로 구성됩니다.
  2. 마스터 노드:
    • 클러스터를 관리하는 주요 구성 요소들이 실행됩니다.
    • 주요 구성 요소:
      • API 서버(kube-apiserver): 클러스터의 API를 제공하는 서버입니다.
      • 컨트롤러 매니저(kube-controller-manager): 클러스터의 상태를 모니터링하고 원하는 상태로 유지하는 다양한 컨트롤러를 실행합니다.
      • 스케줄러(kube-scheduler): 새로 생성된 포드를 적절한 노드에 배치합니다.
      • ETCD: 클러스터 상태를 저장하는 분산 키-값 저장소입니다.
  3. 워커 노드:
    • 실제 컨테이너 애플리케이션이 실행되는 노드입니다.
    • 주요 구성 요소:
      • kubelet: 각 워커 노드에서 실행되며, 마스터 노드의 명령을 실행하고 보고합니다.
      • kube-proxy: 네트워크 프록시로, 서비스 간 통신을 처리합니다.
      • 컨테이너 런타임: Docker, containerd 등 컨테이너를 실행하는 소프트웨어입니다.
  4. 포드(Pod):
    • 쿠버네티스에서 생성되고 관리되는 최소 배포 단위입니다. 하나 이상의 컨테이너를 포함할 수 있습니다.
  5. 서비스(Service):
    • 포드의 집합에 단일 IP 주소와 DNS 이름을 제공하여, 클러스터 내외부에서 접근할 수 있게 합니다.
  6. 디플로이먼트(Deployment):
    • 애플리케이션의 배포 및 관리를 위한 선언적 설정을 제공합니다. 롤링 업데이트 및 롤백을 지원합니다.

3. 쿠버네티스의 주요 개념

  • 네임스페이스(Namespace): 리소스를 가상으로 분리하여 여러 사용자 또는 팀이 하나의 클러스터를 공유할 수 있게 합니다.
  • 레이블(Label): 리소스에 부착하는 키-값 쌍으로, 리소스를 선택하고 그룹화하는 데 사용됩니다.
  • 애노테이션(Annotation): 리소스에 메타데이터를 추가하는 키-값 쌍입니다.

4. 쿠버네티스를 사용하는 이유

  • 자동화: 배포, 스케일링, 복구 등 많은 작업이 자동화되어 운영 효율성을 높일 수 있습니다.
  • 유연성: 다양한 환경(온프레미스, 클라우드, 하이브리드)에서 일관된 환경을 제공하여 애플리케이션을 실행할 수 있습니다.
  • 확장성: 수백에서 수천 개의 노드와 컨테이너를 관리할 수 있는 확장성을 제공합니다.
  • 커뮤니티와 에코시스템: 활발한 오픈 소스 커뮤니티와 다양한 도구 및 확장 기능을 제공하는 에코시스템을 갖추고 있습니다.

쿠버네티스는 컨테이너화된 애플리케이션의 배포와 관리를 자동화하여 개발자와 운영자의 효율성을 높이고, 클라우드 네이티브 환경을 위한 강력한 플랫폼을 제공합니다.

반응형