k8s 구성 요소

cad·2023년 8월 30일

컨트롤 플레인 컴포넌트

1. kube-apiserver

  • kube-apiserver는 쿠버네티스 클러스터로 들어오는 요청을 가장 앞에서 접수하는 역할
  • 쿠버네티스 커맨드 라인 도구인 kubectl을 사용해 각종 명령을 수행할 경우 이 명령은 kube-apiserver로 전송
  • kubectl을 사용해 각종 명령을 수행할 경우 kube-apiserver는 이 요청의 처리 흐름에 따라 적절한 컴포넌트로 요청을 전달하는 역할까지 맡고 있음

2. etcd

  • 키-값(key-value) 형태로 저장하는 저장소
  • 클러스터 및 리소스의 구성 정보, 상태 정보 및 명세 정보 등이 저장
  • 안정적인 동작을 위해 자료를 분산해서 저장하는 구조

3. kube-scheduler

  • 쿠버네티스 클러스터는 여러 노드로 구성
  • 기본적인 작업 단위라고 할 수 있는 파드는 여러 노드 중 특정 노드에 배치되어 동작
  • 새로 생성된 파드를 감지하여 어떤 노드로 배치할지 결정하는 작업을 스케줄링
  • 이런 스케줄링을 담당하는 컴포넌트가 kube-scheduler

4. kube-controller-manager

  • kube-controller-manager는 다운된 노드가 없는지
  • 파드가 의도한 복제(Replicas) 숫자를 유지하고 있는지
  • 서비스와 파드는 적절하게 연결되어 있는지
  • 네임스페이스에 대한 기본 계정과 토큰이 생성되어 있는지를 확인
  • 적절하지 않다면 적절한 수준을 유지하기 위해 조치하는 역할

노드 컴포넌트

1. kublet

  • 쿠블릿(kubelet)은 노드에서 컨테이너가 동작하도록 관리해 주는 핵심 요소
  • 각 노드에서 파드를 생성하고 정상적으로 동작하는지 관리하는 역할을 담당
  • 우리가 쿠버네티스의 워크로드를 관리하기 위해 내려지는 명령은 kubelet을 통해 수행된다.
  • 쿠버네티스 파드를 관리하기 위해 작성하는 YAML을 쿠버네티스 클러스터에 적용하기 위해 kubectl 명령어를 사용할 때, 이 YAML이 kube-apiserver로 전송된 후 kubelet으로 전달
  • kubelet은 이 YAML을 통해 전달된 파드를 생성 혹은 변경하고, 이후 이 YAML에 명시된 컨테이너가 정상적으로 실행되고 있는지 확인

2. container runtime

  • 컨테이너 런타임은 파드에 포함된 컨테이너 실행을 실질적으로 담당하는 애플리케이션을 의미
  • 쿠버네티스가 컨테이너를 제어하기 위해 제공하는 표준 규약인 컨테이너 런타임 인터페이스(CRI)를 준수하여 쿠버네티스와 함께 사용할 수 있는 외부 애플리케이션들을 의미

3. kube-proxy란?

  • Kube-Proxy는 Kubernetes에서 네트워크 동작을 관리하는 컴포넌트
  • 다른 Worker Node의 Pod들 간의 통신이 가능하게 해줌
  • 모든 노드 하나씩 위치하는 오브젝트인 DaemonSet의 형태로 배포되어 있음
profile
Dare mighty things!

0개의 댓글