[infra] kubernetes 동작 원리

orca·2024년 10월 21일

CS

목록 보기
45/46
post-thumbnail

쿠버네티스는 분산 시스템을 실행하기 위한 컨테이너 오케스트레이션 프레임워크입니다.

cluster structure

  • 쿠버네티스 클러스터는 control planenode 로 구성됨
  • control plane : 클러스터의 상태를 관리하고, 워커 노드에 작업을 할당함. 마스터 노드
  • node : 파드를 호스팅하고 관리함. 워커 노드
  • ex) kubectl get nodes 명령어를 통해 확인 가능
    • control plane : 마스터 노드
    • <none> : 워커 노드

control plane

  • 쿠버네티스의 마스터 노드
  • cloud controller manager : 클라우드 공급자와 상호작용해 노드 수준의 스케일링을 제공함

API server

  • kube-apiserver
  • 클러스터와 상호작용하는 모든 요청은 API 서버를 통함
  • ex) kubectl 명령어는 API server 에게 전달됨

Controller Manager

  • 노드 상태 관리
    • 노드의 상태를 주기적으로 확인함
    • 노드가 비정상적이면 해당 노드를 NotReady 상태로 변경하고, 필요한 경우 파드를 다른 노드로 이동
  • 파드 관리
    • 특정 메트릭 ex)CPU, Memory 을 모니터링하여 파드의 현재 상태를 지속적으로 확인
    • ex) HPA
      • 설정된 목표 메트릭과 현재 메트릭을 비교하여 파드의 수를 조정해야 할지를 결정
      • CPU 사용량이 설정한 임계값을 초과하면 HPA는 더 많은 파드를 생성
      • 필요한 경우, 파드의 수를 늘리거나 줄이는 작업을 수행
  • 서비스 관리
    • 서비스와 연결된 파드가 변화할 경우 엔드포인트를 업데이트
    • 서비스가 항상 현재 상태에 맞는 파드에 요청을 전달할 수 있도록 함

Scheduler

  • 파드 스케줄링
    • 새로운 파드가 생성되면, 파드를 실행할 적절한 노드를 선택함
    • 이때 노드의 사용 가능한 리소스와 파드의 리소스 요청을 비교함
    • 기본적으로 Least Requested Priority 방식 선택함
  • API 서버에 파드-노드 매핑 정보를 알려줌

Worker Node

  • 워커 노드에서는 kubeletkube-proxy 가 실행됨

Kubelet

  • 파드 관리
    • API 서버를 통해 받은 파드 사양을 바탕으로 파드를 실행함
  • 헬스 체크
    • 파드의 헬스 체크를 수행하여 비정상 상태의 파드를 감지하고, 필요시 재시작하거나 종료함
  • 상태 보고
    • kubelet은 주기적으로 노드와 파드의 상태를 API 서버에 보고함
    • 파드의 실행 상태, 오류, 리소스 사용량 등
  • 리소스 관리

Kube-proxy

  • 클러스터 내의 서비스와 파드 간의 통신을 관리함
  • 서비스 라우팅
    • 클러스터 내 서비스에 대한 요청을 적절한 파드로 라우팅
  • 로드밸런싱
    • 서비스에 대한 요청이 여러 파드에 분산되도록 하여 로드 밸런싱을 수행함
  • 클러스터 외부 접근
    • NodePort 또는 LoadBalancer 서비스 유형을 사용하는 경우, kube-proxy는 외부에서 클러스터 내 서비스로의 접근을 가능하게 함
  • 쿠버네티스 서비스는 개념적인 것이고, 실제 라우팅은 kube-proxy 가 담당함

0개의 댓글