쿠버네티스의 기본 컴포넌트
쿠버네티스를 이루고 있는 기본적인 컴포넌트들에 대해서 간단하게 알아보도록 하겠습니다.
쿠버네티스 클러스터는 Worker Node (또는 Slave Node) 으로 불리우는 노드와, Master Node (또는 Control Node) 라고 하는 노드들로 구성되어있습니다.
Worker Node 는 실제로 컨테이너와 어플리케이션들이 배포되는 Node 이며,
Master Node는 이러한 Worker Node 의 상태, 컨테이너의 배포 등을 관리하는 역할을 하게 됩니다.
Worker Node 인지 Master Node 인지에 따라 노드에 올라가는 컴포넌트는 아래와 같이 달라지게 됩니다.
Master Node 컴포넌트
API Server (kube-apiserver)
쿠버네티스의 프론트 엔드같은 존재로, 쿠버네티스 클러스터와 통신하기 위한 수단입니다.
유저, 커맨드 라인 인터페이스 등은 모두 API 를 거쳐 다른 클러스터와 상호작용하기 때문에, API Server 에서 이러한 요청을 받아 적절한 컴포넌트에 요청을 전달하는 역할을 하고 있습니다.
etcd (엣씨디)
쿠버네티스에서 데이터의 저장을 위해 사용하는 분산형 키-값 저장소입니다.
클러스터와 리소스의 구성, status 정보 등 클러스터 관리에 사용되는 모든 데이터는 etcd 에서 저장되어 관리됩니다.
또한 etcd 는 클러스터 내부의 마스터들 간 데이터에 대한 충돌이 일어나지 않기 위한 lock 기능과 장애 시에 데이터의 소실을 방지 하기 위한 분산형 스토리지 기능을 제공하고 있습니다.
스케쥴러 (kube-scheduler)
여러 노드에 걸쳐서 컨테이너를 배포 및 관리하는 컴포넌트입니다.
쿠버네티스 클러스터 구조는 여러 개의 노드로 구성되어있기 때문에, 신규로 컨테이너가 생성되면 스케쥴러가 어떤 노드에 배포할지 적절한 노드를 찾아 할당하는 역할을 수행합니다.
Controller (kube-controller-manager)
쿠버네티스의 오케스트레이션 역할을 해주는 두뇌같은 컴포넌트로, 노드/컨테이너 또는 endpoint 가 다운되었을 때 감지하고 대응하는 역할을 합니다.
장애가 발생했을 때 새 컨테이너를 만들지, 정상화까지 기다릴지 등의 판단을 컨트롤러 컴포넌트가 수행하게 됩니다.
Slave Node 컴포넌트
kubelet
클러스터의 각 노드에서 실행되는 에이전트입니다.
컨테이너가 노드에서 잘 실행되고 있는지 확인하고, 상태를 kube-apiserver 로 전달하는 역할을 하며,
상태 전달 뿐만 아니라 kube-apiserver 로부터 오는 명령(파드 생성 등)을 받아 수행하기도 합니다.
Container Runtime
파드에 포함되어있는 컨테이너를 실행할 때 필요한 소프트웨어입니다. ex) 도커, CRI-O
컨테이너 어플리케이션이 CRI (Container Runtime Interface) 를 준수한다면 docker 뿐만 아니라 다른 외부 어플리케이션도 쿠버네티스에서 동작할 수 있습니다.
'클라우드' 카테고리의 다른 글
[쿠버네티스] 쿠버네티스에서 yaml config 파일 작성하는 방법과 pod 만들어보기 (1) | 2023.11.23 |
---|---|
클라우드란? 클라우드 개념 쉽고 간단하게 이해하기 (0) | 2023.11.10 |
개발자를 위한 도커(Docker)의 기본 개념 (2) - 쿠버네티스편 (0) | 2022.09.25 |
개발자를 위한 도커(Docker)의 기본 개념 (1) - 도커편 (2) | 2022.09.25 |