본문 바로가기

Container/Kubernetes

[K8S] kubelet

kubelet은 쿠버네티스에서 각 노드에서 실행되는 에이전트(agent)로, 클러스터의 노드 상태를 관리하고 파드(Pod)를 실행하는 역할을 담당한다. 쿠버네티스 클러스터의 모든 워커 노드(worker node)와 컨트롤 플레인 노드(control plane node)에 kubelet이 실행된다.

 

주요 기능

(1) 컨테이너 관리

  • 파드 내부의 컨테이너를 생성, 시작, 중지, 삭제합니다.

(2) 헬스체크 (Probes)

  • Liveness Probe:
    • 컨테이너가 정상적으로 실행 중인지 확인.
    • 실패 시 컨테이너를 재시작.
  • Readiness Probe:
    • 컨테이너가 요청을 처리할 준비가 되었는지 확인.
    • 준비되지 않은 경우, 서비스에서 제외.
  • Startup Probe:
    • 컨테이너 초기화가 완료되었는지 확인.

(3) 노드 리소스 관리

  • 각 파드의 CPU, 메모리, 디스크 사용량을 제한하고 모니터링.

(4) 시크릿 및 컨피그맵 제공

  • 파드가 필요로 하는 Secrets과 ConfigMaps 데이터를 컨테이너에 제공합니다.

(5) 로깅 및 메트릭 수집

  • 컨테이너의 로그와 리소스 사용량 메트릭을 수집하여 클러스터 운영에 필요한 정보를 제공합니다.

(6) 볼륨 관리

  • 파드에서 사용하는 볼륨(예: NFS, Ceph, AWS EBS 등)을 마운트하고 관리합니다.

 

구성 요소

  1. kubeconfig:
    • kubelet이 API 서버와 통신하기 위해 사용하는 인증 구성 파일.
  2. 컨테이너 런타임:
    • kubelet은 컨테이너 런타임을 통해 컨테이너를 실행.
    • 예: Docker, containerd, CRI-O.
  3. 파드 스펙:
    • 파드 정의(YAML 파일 형식)를 기반으로 컨테이너를 실행.
  4. CNI (Container Network Interface):
    • 네트워크 플러그인을 사용하여 파드 네트워크를 설정.

주요 동작 흐름

  1. API 서버에서 파드 명령 수신:
    • 새로운 파드를 실행하거나 기존 파드를 수정하라는 요청을 API 서버에서 수신.
  2. 컨테이너 런타임과 상호작용:
    • 컨테이너 런타임을 통해 파드를 실행.
  3. 상태 점검 및 보고:
    • 파드 상태를 모니터링하고 주기적으로 API 서버에 상태 업데이트.
  4. 컨테이너 복구:
    • 문제가 있는 컨테이너를 재시작하거나 새로 생성.

 

동작 원리

  1. API 서버와 통신:
    • kubelet은 kube-apiserver와 통신하여 할당된 파드의 스펙을 수신합니다.
  2. 파드 실행:
    • 받은 파드 스펙에 따라 컨테이너 런타임(Docker, containerd 등)을 통해 컨테이너를 생성하고 실행합니다.
  3. 상태 모니터링:
    • 파드와 컨테이너의 상태를 주기적으로 점검합니다.
    • 리소스 사용량(CPU, 메모리 등)을 확인하고, 비정상적인 파드를 다시 실행하거나 종료합니다.
  4. 상태 보고:
    • 노드와 파드의 상태를 kube-apiserver에 주기적으로 보고합니다.
반응형

'Container > Kubernetes' 카테고리의 다른 글

[K8S] Deployment  (0) 2024.12.31
[K8S] kube-proxy  (0) 2024.12.28
[K8S] Kube-controller-manager  (0) 2024.12.24
[K8S] Kube-API Server  (0) 2024.12.24
[K8S] ETCD  (1) 2024.12.24