inblog logo
|
Unchaptered
  • LinkedInGitHub
  • Monthly-CS
KubernetesAWS

쿠버네티스 아키텍처 리뷰

쿠버네티스 문서 학습하기
unchaptered's avatar
unchaptered
Dec 05, 2024
쿠버네티스 아키텍처 리뷰
Contents
쿠버네티스란 무엇인가?컨트롤 플레인 컴포넌트노드 컴포넌트 구성 요소에드온 구성 요소노드 Ref.Description. Ref.

쿠버네티스 뒤편의 구조와 설계 개념들[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 연결

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

    • 물리적 : 각 controller loop를 단일 바이너리로 컴파일해 단일 프로세스로 실행

    • 대상 : cloud-provider-aws[9], cloud-provider-gcp[10], cloud-provider-azure[11]

노드 컴포넌트 구성 요소

노드 컴포넌트 구성요소[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.

  • [1] 쿠버네티스 뒤편의 구조와 설계 개념들

  • [2] 컨트롤 플레인 컴포넌트 구성요소, 쿠버네티스 컴포넌트

  • [3] 노드 컴포넌트구성요소, 쿠버네티스 컴포넌트

  • [4] 노드, 쿠버네티스 컴포넌트

  • [5] 에드온, 쿠버네티스 컴포넌트

  • [6] 컨트롤러, 쿠버네티스

  • [7] 쿠버네티스 컨트롤 매니저, 쿠버네티스

  • [8] 클라우드 컨트롤 매니저, 쿠버네티스

  • [9] cloud-provider-aws, 클라우드 컨트롤 매니저, 쿠버네티스

  • [10] cloud-provider-gcp, 클라우드 컨트롤 매니저, 쿠버네티스

  • [11] cloud-provider-azure, 클라우드 컨트롤 매니저, 쿠버네티스

  • [12] containerd overview, Container Runtime

  • [13] cri-o, Container Runtime

  • [14] dns-pod-service, 서비스/로드밸런싱/네트워킹, 쿠버네티스

  • [15] web-ui-dashboard, 쿠버네티스

  • [16] resource-usage-monitoring, 쿠버네티스

  • [17] logging, 쿠버네티스

Description. Ref.

  • [d1] 에이전트(agent)

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

Share article
Contents
쿠버네티스란 무엇인가?컨트롤 플레인 컴포넌트노드 컴포넌트 구성 요소에드온 구성 요소노드 Ref.Description. Ref.

Unchaptered

RSS·Powered by Inblog