본문 바로가기

가상 머신/쿠버네티스

[ 쿠버네티스 / Kurbernetes ] 아키텍쳐 보기

반응형

쿠버네티스의 아키텍처는 컨테이너화된 애플리케이션을 배포, 관리, 확장하기 위해 설계된 모듈식 구조를 가지고 있습니다.
주요 구성 요소는 마스터 노드와 워커 노드로 나누어집니다. 아래에 쿠버네티스 아키텍처의 그림과 함께 각 구성 요소를 설명하겠습니다.

1. 마스터 노드 (Control Plane)

마스터 노드는 클러스터를 관리하고 제어하는 역할을 합니다. 주요 구성 요소는 다음과 같습니다:

a. API 서버 (kube-apiserver)

  • 역할: 모든 API 요청을 처리하며, 클러스터의 중앙 제어 포인트입니다.
  • 기능: 클라이언트 요청을 인증하고, 유효성을 검사하며, etcd와 상호작용합니다.

b. 컨트롤러 매니저 (kube-controller-manager)

  • 역할: 클러스터 상태를 모니터링하고, 원하는 상태로 유지합니다.
  • 기능: 다양한 컨트롤러(노드 컨트롤러, 레플리케이션 컨트롤러, 엔드포인트 컨트롤러 등)가 포함되어 있습니다.

c. 스케줄러 (kube-scheduler)

  • 역할: 새로 생성된 포드를 적절한 워커 노드에 할당합니다.
  • 기능: 리소스 요구 사항, 정책, 장애 내성 등을 고려하여 스케줄링 결정을 내립니다.

d. etcd

  • 역할: 모든 클러스터 데이터를 저장하는 고가용성 키-값 저장소입니다.
  • 기능: 클러스터 상태, 구성 데이터 등을 저장합니다.

2. 워커 노드 (Node)

워커 노드는 컨테이너화된 애플리케이션을 실제로 실행하는 역할을 합니다. 주요 구성 요소는 다음과 같습니다:

a. kubelet

  • 역할: 각 노드에서 실행되며, 마스터 노드의 명령을 수신하고 실행합니다.
  • 기능: 포드를 실행하고, 상태를 모니터링하며, 마스터 노드에 보고합니다.

b. kube-proxy

  • 역할: 클러스터 내에서 네트워크 통신을 처리합니다.
  • 기능: 네트워크 규칙을 적용하고, 서비스 간 통신을 지원합니다.

c. 컨테이너 런타임

  • 역할: 컨테이너를 실제로 실행하는 소프트웨어입니다.
  • 기능: Docker, containerd, CRI-O 등이 포함됩니다.

3. 주요 개념

a. 포드 (Pod)

  • 역할: 쿠버네티스의 최소 배포 단위로, 하나 이상의 컨테이너를 포함합니다.
  • 기능: 동일한 네트워크 네임스페이스를 공유하며, 스토리지 볼륨을 사용할 수 있습니다.

b. 서비스 (Service)

  • 역할: 포드의 집합에 단일 IP 주소와 DNS 이름을 제공하여, 클러스터 내외부에서 접근할 수 있게 합니다.
  • 기능: 로드 밸런싱과 서비스 디스커버리를 제공합니다.

c. 디플로이먼트 (Deployment)

  • 역할: 애플리케이션의 배포 및 관리를 위한 선언적 설정을 제공합니다.
  • 기능: 롤링 업데이트 및 롤백을 지원합니다.

d. 네임스페이스 (Namespace)

  • 역할: 클러스터 리소스를 가상으로 분리하여 여러 사용자 또는 팀이 하나의 클러스터를 공유할 수 있게 합니다.
  • 기능: 리소스 격리를 통해 보안과 자원 관리를 효율화합니다.

4. 아키텍처 요약

  1. 마스터 노드:
    • API 서버: 중앙 제어 포인트
    • 컨트롤러 매니저: 클러스터 상태 유지
    • 스케줄러: 포드 할당
    • etcd: 상태 저장
  2. 워커 노드:
    • kubelet: 노드 관리
    • kube-proxy: 네트워크 통신
    • 컨테이너 런타임: 컨테이너 실행
  3. 기본 구성 요소:
    • 포드: 최소 배포 단위
    • 서비스: 네트워크 접근
    • 디플로이먼트: 애플리케이션 배포
    • 네임스페이스: 리소스 격리

쿠버네티스의 아키텍처는 이처럼 다양한 구성 요소들이 상호작용하여 컨테이너화된 애플리케이션의 배포, 관리, 확장을 자동화합니다. 이를 통해 운영자는 복잡한 애플리케이션 환경을 효율적으로 관리할 수 있습니다.

반응형