쿠버네티스

From CS Wiki
Revision as of 12:08, 2 October 2024 by 핵톤 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Kubernetes
컨테이너 기반 가상화 관리용 시스템


쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 지원 그리고 도구들은 광범위하게 제공된다.

쿠버네티스 아키텍처

쿠버네티스 아키텍처.png

아키텍처 구성

쿠버네티스 마스터 (Kubernetes Master)

마스터는 클러스터 관리의 중심 역할을 하며, 주로 제어, 관리, 통신 기능을 담당하는 구성 요소를 포함한다.

  • API 서버: 통신의 핵심, 사용자 및 시스템이 클러스터와 상호작용하는 인터페이스
  • 컨트롤러 매니저: 노드 및 포드 상태 유지 관리
  • 스케줄러: 워커 노드에 포드를 배치
  • Etcd: 클러스터 상태 및 메타데이터 저장소

컨테이너 런타임 (Container Runtime)

컨테이너 런타임은 워커 노드에서 포드 내부의 컨테이너들을 실제로 실행하는 환경을 제공한다.

  • 컨테이너: 애플리케이션이 실행되는 가장 작은 단위로, 쿠버네티스에서 포드 내에서 실행된다.
    • Docker, Containerd, CRI-O: 쿠버네티스가 지원하는 다양한 컨테이너 런타임들

워커 노드 (Worker Node)

실제 애플리케이션이 실행되는 곳으로, 여러 자원 관리를 수행하는 하위 시스템이 포함된다.

  • Kubelet: 워커 노드에서 API 서버와 상호작용하며, 포드를 관리하고 배포
  • Kube-Proxy: 네트워크 트래픽 및 로드 밸런싱 관리
  • 포드 (Pod): 작업의 단위, 애플리케이션이 실행되는 컨테이너들을 포함함
  • 서비스 (Service): 외부 클라이언트와 내부 포드 간 통신을 위한 로드밸런싱과 네트워크 엔드포인트를 정의

애플리케이션 및 네트워크 단위

표면적으로 사용자가 접하는 애플리케이션 및 네트워크 단위를 상대적으로 상위 개념부터 나열하면 아래와 같다.

클러스터 (Cluster)

  • 쿠버네티스의 가장 큰 개념으로, 여러 노드(서버)로 구성된다. 클라우드 서비스에서도 쿠버네티스를 사용하기 위해선 먼저 클러스터를 생성한다.
  • 클러스터는 쿠버네티스 마스터와 여러 워커 노드를 포함하며, 이들이 함께 동작해 애플리케이션을 실행한다.

네임스페이스 (Namespace)

  • 클러스터 안에서 논리적으로 리소스를 구분하는 단위이다.
  • 네임스페이스는 여러 팀이나 애플리케이션이 동일 클러스터에서 격리된 상태로 동작할 수 있게 한다.

마스터 (Master)

  • 클러스터를 제어하고 관리하는 노드로 클러스터 전체의 상태와 애플리케이션 배포를 관리하는 역할을 한다.
  • 마스터는 여러 컴포넌트(API 서버, 스케줄러, 컨트롤러 매니저, Etcd)를 실행하는 노드이다.

워커 노드 (Worker Node)

  • 클러스터 내에서 실제 애플리케이션이 실행되는 노드
  • 워커 노드는 컨테이너 런타임, Kubelet, Kube-Proxy 등의 컴포넌트를 포함하며, 포드를 실행하는 역할을 한다.

디플로이먼트 (Deployment)

  • 포드의 상태를 관리하는 상위 개념으로, 포드의 업데이트, 복구, 스케일링 등을 관리한다.
  • 디플로이먼트는 포드의 선언적 관리를 제공하며, 애플리케이션의 안정적 배포를 위해 사용된다.

레플리카셋 (ReplicaSet)

  • 디플로이먼트가 관리하는 개념으로, 여러 포드의 복제본을 유지하는 역할을 한다.
  • 이를 통해 애플리케이션이 항상 특정 수의 포드를 유지하며 실행될 수 있도록 한다.

포드 (Pod)

  • 쿠버네티스의 가장 작은 배포 단위로, 하나 이상의 컨테이너를 포함한다.
  • 포드는 실제 애플리케이션의 실행 환경을 제공하며, 여러 컨테이너가 협력해 작업을 처리한다.

컨테이너 (Container)

  • 포드 내부에서 실행되는 애플리케이션 단위로, 실제로 애플리케이션 코드를 실행하는 환경이다.
  • 컨테이너는 가상화된 독립 환경에서 동작하며, 포드가 이 컨테이너를 관리한다.

서비스 (Service)

  • 포드가 외부나 클러스터 내에서 네트워크 통신을 할 수 있도록 하는 추상화된 네트워크 엔드포인트이다.
  • 포드의 IP 주소가 변하더라도 서비스가 이를 해결하여 외부 통신이 가능하게 해준다.

(참고) 계층 구조

  1. 클러스터
    • 네임스페이스
    • 마스터 노드
    • 워커 노드
      • 포드
        • 컨테이너
  2. 디플로이먼트
    • 레플리카셋
      • 포드
        • 컨테이너
  3. 서비스 (포드의 네트워킹을 담당)

현황

  • IBM, MS, 오라클 등의 CSP에서 쿠버네티스 지원

같이 보기