쿠버네티스 아키텍처

log.yunsik·2022년 3월 4일
0

쿠버네티스 아키텍처 개요

쿠버네티스를 배포하면 클러스터를 얻는다. 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커머신의 집합으로 한개 이상의 워크 노드를 가진다.
클러스터에는 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개의 댓글