쿠버네티스 아키텍처

log.yunsik·2022년 3월 4일

쿠버네티스 아키텍처 개요

쿠버네티스를 배포하면 클러스터를 얻는다. 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커머신의 집합으로 한개 이상의 워크 노드를 가진다.
클러스터에는 Control Plane, Woker Node, 애드온이 존재한다.

  • 워크노드 : 애플리케이션의 구성요소인 Pod를 호스트
  • 컨트롤 플레인 : 클러스터 스케줄링 등 전반적인 것들을 수행하고 클러스터 이벤트를 감지하고 반응
  • 애드온 : 클러스터 기능을 구현하기 위해 클러스터 단위 기능을 제공

Control Plane이란?

컨테이너의 라이프사이클을 정의, 배포, 관리하기 위한 API와 인터페이스들을 노출하는 컨테이너 오케스트레이션 레이어로 이 계층은 다양한 컴포넌트로 구성된다.(제한되는 것은 아님)

Control Plane

  • Kube-apiserver
    API서버는 쿠버네티스 API를 노출하는 쿠버네티스 컨트롤 플레인 컴포넌트이다. API는 쿠버네티스 컨트롤 플레인의 프론트엔드이다.
  • etcd
    모든 클러스터 데이터를 담는 뒷단의 저장소로 사용되는 일관성 고가용성 키 값 저장소 클러스터에서 etcd를 백엔드 저장소로 사용한다면 이 데이터는 필수로 백업해야한다.
  • kube-scheduler
    노드가 배정되지 않은 새로 생성된 파드를 감지하고 실행할 노드를 선택하는 컨트롤 플레인 컴포넌트
  • kube-controller-manager
    컨트롤러 프로세스를 실행하는 컨트롤 플레인 컴포넌트 쿠버네티스에서 컨트롤러는 클러스터의 상태를 관찰한 다음 필요한 경우에 생성 또는 변경을 요청하는 컨트롤 루프이다. 각 컨트롤러는 현재 클러스터의 상태를 의도한 상태에 가깝게 이동한다.
  • cloud-controller-manager
    클라우드별 컨트롤 로직을 포함하는 쿠버네티스의 컨트롤 플레인 컴포넌트이다. 클라우드 매니저를 통해 클라우드 공급자의 API에 연결하고 클라우드 플랫폼과 상호작용하는 컴포넌트와 클러스터와만 상호작용하는 컴포넌트를 구분할 수 있게 한다.

노드란?

동작중인 파드를 유지시키고 쿠버네티스 런타임 환경을 제공하며 모든 노드 상에서 동작한다.

노드 컴포넌트

  • Kubelet
    클러스터 각 노드에서 실행되는 에이전트. Kubelet은 파드에서 컨테이너가 확실하게 동작하도록 관리한다. 쿠버네티스를 통해 생성되지 않는 컨테이너는 관리하지 않는다.
  • Kube-proxy
    클러스터의 각 노드에서 실행되는 네트워크 프록시로 쿠버네티스 서비스의 구현부이다.
  • 컨테이너 런타임
    컨테이너 실행을 담당하는 소프트웨어이다. 여러 컨테이너 환경을 지원함.

애드온이란?

애드온은 쿠버네티스 리소스를 이용하여 클러스터 기능을 구현한다. 이들은 클러스터 단위의 기능을 제공한다.

  • DNS
    다른 애드온은 절대적으로 요구되지는 않지만 DNS는 많은 곳에서 필요하기 때문에 클러스터 DNS를 갖춰야한다. 쿠버네티스에 의해 구동되는 컨테이너는 DNS검색에서 이 DNS서버를 자동으로 포함한다.

0개의 댓글