본문 바로가기

Docker & Kubenetes

쿠버네티스 클러스터 컴포넌트 Kubernetes Cluster Component

쿠버네티스에서 클러스터의 모든 구성 요소들은 API 서버를 통해서만 상호 접근 가능하도록 설계되어 있습니다.

 

Master Node
클러스터 전체를 관리하는 역할, 컨트롤 플레인(Control Plane) 이라고 부르기도 한다

해당 컴포넌트들은 kube-system 네임스페이스 안에 파드 형태로 배포되어 있다.

   API Server

클러스터 구성 요소들의 상호 통신에 필요한 API를 관리하는 컴포넌트

   ETCD

클러스터 내부의 각 구성요소들에 대한 정보가 키-값 형태로 저장된 메모리 데이터베이스

   Scheduler

클러스터의 각 컨테이너에 최적의 배포를 수행하는 스케쥴러

   Controller

컨트롤러 매니저(kube-controller-manager)라고 부르며, 클러스터에서 구동되는 리소스( Node, Deployment, Service Account 등)를 유지 관리하는 프로세스의 집합

   DNS

클러스터 내부의 특정 도메인을 찾을 때 사용하는 네임 서버
1.11v 부터 kube-dns 대신에 coredns가 사용되었으며 부족했던 신뢰성, 보안성, 유연성이 개선되었다.
coredns는 CNCF가 관리한다.

Worcker Node
애플리케이션, 서비스들이 동작하는 노드

   Kubelet

클러스터의 각 Node에서 Pod 안의 Container들이 정상 구동되도록 조율, 실행한다.
Pod와 Node의 상태를 API Server에 보고하고 Container 동작을 확인한다.
cAdvisor를 통해 metric 수집 및 공개한다.

   Kubeproxy

모든 노드에 하니씩 Daemonset으로 배포되며, 노드에서의 로드밸런싱 기능 제공하고 서비스와 파드의 변경사항을 감지하여 최신 상태로 유지한다.
1.20v 이후 iptables 규칙을 관리하고 서비스명과 ClusterIP를 내부 DNS에 등록하는 역할만한다.

 

   iptalbes

netfilter를 이용하여 방화벽을 수행하는데, netfilter는 리눅스 커널 모듈로써, I/O을 결정한다.
iptable을 프론트, netfilter를 백앤드로 생각하면 된다.

컨테이너 런타임 엔진 (Container Runtime Engine)

클러스터 내부의 컨테이너 이미지를 가져오고 구동시키는 엔진
Pod가 Node에서 동작하기 위해서 반드시 있어야 하며 다음과 같은 런타임 엔진들이 있다.

  • containerd
  • CRI-O
  • Docker Engine (deprecated; 1.24에서 지원 중단)
  • Mirantis Container Runtime

Docker Engine 중단 : 2020년 12월 1.24v이후 지원을 중단을 발표하고 22년 2월 기준으로 지원 중단되었다.