쿠버네티스 아키텍처 리뷰

쿠버네티스 문서 학습하기
이민석's avatar
Dec 05, 2024
쿠버네티스 아키텍처 리뷰

쿠버네티스 뒤편의 구조와 설계 개념들[1]을 도식화와 함께 공부했습니다.

쿠버네티스란 무엇인가?

쿠버네티스는 컨테이너화된 앱을 배포 및 관리하는 오케스트레이션 도구입니다.
쿠버네티스 클러스터는 컨트롤 플레인[2], 워커 노드[4], 에드온[5]으로 구성됩니다.
기본적으로 클러스터 구조는 다음과 같은 구조로 구성되어 있습니다.

[그림 1] 쿠버네티스 클러스터

컨트롤 플레인 컴포넌트

컨트롤 플레인 컴포넌트 구성 요소[2]는 대체적으로 2가지 업무를 수행합니다.

  • 클러스터에 대한 전역 결정 (e.g. 스케줄링)

  • 이벤트 감지 및 대응 (e.g. 디플로이먼트의 리플리카 필드가 충족되지 않을 때 새 파드 시작)

컨트롤 플레인은 대략적으로 5개의 구성요소를 가지고 있습니다.

  • etcd : 쿠버네티스의 선언된 상태를 저장하는 키-값 저장소

  • kube-api-server : 쿠버네티스 클러스터를 제어하기 위한 API Endpoint

  • kube-scheduler : 노드가 할당되지 않은 새 생성된 파드를 감시하고 리소스 요구사항, HW/SW/정책 제약, 선호도 및 반 선호도 사양, 데이터 위치, 워크로드 간 간섭, 마감일 등의 기준을 가지고 파드가 생성될 노드를 지정

  • kube-controller-manager[7] : controller[6]의 프로세스를 실행

    • 논리적 : 각 controller는 개별 프로세스로 실행

    • 물리적 : 단일 바이너리로 컴파일되며 단일 프로세스로 실행

    • 대상 : node-controller, job-controller, endpoint-slice,controller, service-account-controller

  • cloud-controller-manager[8] : 클라우드 API와 kube-api-server 연결

노드 컴포넌트 구성 요소

노드 컴포넌트 구성요소[3]는 대체적으로 2가지 업무를 수행합니다.

  1. 동작 중인 파드를 유지

  2. 모든 노드 상에서 쿠버네티스 런타임 환경을 제공

노드는 기본적으로 3가지 구성요소를 가지고 있습니다.

  1. kublet : 각 노드에서 실행되는 에이전트[d1], 파드와 컨테이너의 동작을 관리

  2. kube-proxy : 각 노드에서 실행되는 네트워크 프록시[d2], 내부 네트워크 세션, 클러스터 바깥에서 파드로 네트워크 통신 지원

  3. container-rumtime : 컨테이너 실행을 담당

    1. 대상 : containerd[12], cri-o[13]

에드온 구성 요소

에드온 구성요소[5]는 대체적으로

  1. 쿠버네티스 리소스(Daemonset, Deployment 등) 을 이용해 클러스터 기능 구현

  2. 클러스터 단위의 기능을 제공하기 위해 kube-system 네임스페이스 사용

애드온은 크게 4가지로 구성됩니다.

  1. DNS[14] : 워크로드는 DNS를 사용하여 클러스터 내 서비스를 찾을 수 있음

  2. WEB UI (대시보드)[15] : 쿠버네티스 모니터링용 대시보드를 배포할 수 있음

  3. 컨테이너 리소스 모니터링[16]

  4. 클러스터 레벨 로깅[17]

노드

Ref.

Description. Ref.

  • [d1] 에이전트(agent)

  • [d2] 네트워크 프록시(network proxy)

Share article

Unchaptered