쿠버네티스 아키텍처 - 구성 / 설계

Chori·2025년 11월 14일
post-thumbnail

초보를 위한 쿠버네티스 안내서를 수강하며 정리한 내용입니다.

중간에서 상태를 확인하고 실행하는 영역은 Master, 실제로 컨테이너가 실행되는 영역은 Node

Master

  • 상태 확인(Observe) -> 차이점 발견(Diff) -> 조치(Act)
    • Current State와 Desired State가 일치하는지 확인, 차이점이 발견되면 Current State가 Desired State가 되도록 조치, 이 과정을 반복
  • API Server
    • 상태를 바꾸거나 조회
    • etcd와 유일하게 통신하는 모듈
    • REST API 형태로 제공
    • 권한을 확인하여 적절한 권한이 없을 경우 요청을 차단
    • 관리자 요청 뿐 아니라 다양한 내부 모듈과 통신
    • 수평으로 확장되도록 디자인
  • etcd
    • 모든 상태와 데이터를 저장
    • 분산 시스템으로 구성하여 안전성을 높임 (고가용성)
    • 가볍고 빠르면서 정확하게 설계 (일관성)
    • Key-Value 형태로 데이터 저장
    • 백업 필수
  • Scheduler
    • 새로 생성된 pod를 감지하고 실행할 Node를 선택
    • Node의 현태 상태와 pod의 요구사항을 확인
  • Controller
    • 끊임없이 상태를 확인하고 원하는 상태를 유지
    • 복잡성을 낮추기 위해 하나의 프로세스로 실행
    • 논리적으로 다양한 컨트롤러가 존재
  • 조회 흐름
    1. Controller가 API Server에 정보 조회 요청
    2. API Server는 요청을 보낸 Controller가 정보 조회 권한이 있는지 확인
    3. 권한이 있으면 etcd에서 정보를 조회하여 Controller에게 전달
  • 기본 흐름
    1. 원하는 상태가 변경되면 API Server는 Controller한테 알림
    2. Controller는 원하는 상태와 현재 상태가 불일치하기 때문에 조치를 해야 함, 원하는 상태로 리소스를 변경
    3. Controller는 리소스가 변경된 결과를 API Server한테 전달
    4. API Server는 Controller에게 정보 갱신 권한이 있는지 확인
    5. 권한이 있으면 etcd에 정보를 갱신

API Server 통신

Node

  • Node에는 크게 Proxy와 Kubelet이라는 두 개의 컴포넌트가 있음
  • Proxy와 Kubelet도 Master와 통신할 때 API Server만 바라봄
  • Proxy
    • 네트워크 프록시와 부하 분산 역할
  • Kubelet
    • 각 Node에서 실행
    • Pod을 실행 / 중지하고 상태를 확인

Pod이 생성되는 과정

  1. 관리자가 API Server에 Pod 생성 요청
  2. API Server는 요청을 etcd에 상태를 생성 요청으로 기록
  3. Controller는 새로 생긴 Pod가 있는지 계속 확인하다가 Pod 생성 요청을 발견
  4. Controller는 API Server에 실제 Pod를 할당하는 요청 보냄
  5. API Server는 해당 요청을 받아서 etcd에 상태를 할당 요청으로 변경
  6. Scheduler는 할당 요청이 들어온 Pod이 있는지 계속 확인하다가 Pod 할당 요청을 발견
  7. Sechduler가 특정 Node에 Pod를 할당
  8. API Server는 etcd에 Pod를 특정 노드에 할당하는데 아직 실행되기 전 상태라고 변경
  9. Kubelet이 자신의 Node에 할당된 Pod 중에서 아직 실행이 안 된 것이 있는지 계속 확인하다가 새로 추가된 Pod를 확인
  10. 해당 정보를 가지고 와서 Node에 Pod를 생성
  11. API Server가 etcd에 Pod가 특정 Node에 할당되었고 실행 중이라는 상태로 변경
profile
전부인 것처럼, 전부가 아닌 것처럼

0개의 댓글