IT Infra/Kubernetes

쿠버네티스 구성요소

Daniel.Lee 2022. 2. 22. 01:22
 

kubernetes는 다수의 서버를 관리하는 툴이다.

하나의 서버가 아니라, 여러 대의 서버를 관리하기 위한 툴이므로 여러가지 구성요소가 존재한다.

간혹 오브젝트랑 헷갈릴 수 있는데 오브젝트들이 모여서 하나의 서버가 되는 것이고 그 서버를 관리하는 것이 쿠버네티스 구성요소이다.

kubernetes는 크게 마스터(master),노드(node) 로 구성된다.

마스터(master)


마스터에는 etcd, API 서버, 컨트롤러 매니저, 스케줄러 등이 존재한다.

  • etcd
    • 구성 요소들의 상태 값이 모두 저장되는 곳
    • etcd의 정보만 백업이 되어있다면 긴급한 장애 상황에서도 클러스터 복구 가능
      • 분산 저장이 가능한 key-value 저장소이므로 복제해서 여러 곳에 저장을 해두면 하나의 etcd가 장애가 나더라고 시스템 가용성 확보
  • API 서버
    • 쿠버네티스 클러스터의 중심역할을 하는 통로
    • 주로 상태 값을 저장하는 etcd와 통신, 그 밖의 요소들 또한 api 와 통신
    • 모든 직원과 상황을 관리하고 목표를 설정하는 관리자에 해당
  • 컨트롤러 매니저(Controller-manager)
    • 쿠버네티스 클러스터의 오브젝트 상태를 관리
    • 쿠버네티스에는 노드 컨트롤러, 레플리카셋 컨트롤러 등 다양한 컨트롤러가 있고 그 컨트롤러를 매니징하는 역할은 한다고 보면 된다.
  • 스케쥴러
    • 노트의 상태와 자원, 레이블, 요구 조건 등을 고려해 파드를 어떤 워커 노드에 생성할 것인지를 결정하고 할당한다.
  • kubectl
    • 쿠버네티스에 클러스터에 명령을 내리는 역할을 한다.
    • 구성요소들과 다르게 바로 실행되는 명령 형태인 바이너리로 배포되므로 마스터 노드에 있을 필요는 없다.

노드(Node)


노드는 kubelet, 컨테이너 런타임(container Runtime),파드 등으로 구성 된다.

  • kubelet
    • 파드의 구성 내용을 받아서 컨테이너 런타임으로 전달하고 파드 안의 컨테이너들이 정상적으로 작동하는지 모니터링 한다.
    • 컨테이너들이 실행되는 것을 직접적으로 관리하는 역할로 보면 된다.
  • 컨테이너 런타임(container Runtime)
    • 파드를 이루는 컨테이너의 실행을 담당한다.
    • 파드 안에서 다양한 종류의 컨테이너가 문제없이 작동하게 만드는 표준 인터페이스이다.
    • Docker 등 실제로 컨테이너를 실행시키는 구현체이다.
  • 파드(Pod)
    • 한 개 이상의 컨테이너로 단일 목적의 일을 하기 위해 모인 단위
      • 어떠한 컨테이너로 생성하냐에 따라 웹서버의 역할, 로그나 데이터 분석의 역할을 할 pod 로 만들 수 있다.

참고

https://www.skyer9.pe.kr/wordpress/?p=598

컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커