본문 바로가기
Devops/Kubernetes

[Kubernetes] Core Components

by keyhong-DE 2023. 11. 8.

Cluster

Worker Node에서 구동되는 컨테이너화(Containerized)된 애플리케이션이나 다른 Node를 관리하는 Master Node와 같은 Machine들의 집합체

Node

하나 또는 여러 개의 Pod를 운영하고 다른 클러스터 머신들과 communication 할 수 있도록 특정 하드웨어의 capacity를 소유 할 수 있는 물리적/가상 머신

Master Node

클러스터의 Control Plane. 다른 워커 노드들의 Pod를 관리함

Worker Node

리소스를 가지고 Pod를 소유하여 컨테이너 앱을 구동함

Pod

실제로 구동되는 컨테이너를 지님. volume과 같은 리소스를 필요로 함

Container

일반적인 도커 컨테이너

Services

논리적인 Pod의 집합체. 유일하고 컨테이너나 파드에 독립적인 IP address를 갖음

API Server

쿠버네티스의 프론트 엔드처럼 작동. 사용자, 관리 장치, 명령줄 인터페이스 모두 API서버에 통신해 쿠버네티스 클러스터와 상호 작용한다.

etcd

분산되고 신뢰할 수 있는 key-value 저장소로 쿠버네티스가 클러스터 관리에 사용되는 모든 데이터를 저장하는 데 사용한다. 클러스터에 노드가 여럿이고 마스터 노드가 여럿이라면, etcd는 노드에 대한 모든 정보를 분산 방식으로 저장한다.

etcd는 마스터 간의 충돌을 없게 하기 위해 클러스터 내 lock을 구현하는 역할을 한다.

Scheduler

스케줄러는 작업(work)을 다중 노드에 걸 컨테이너를 배포하는 역할을 한다. 새롭게 생긴 컨테이너를 찾아서 노드에 할당한다. 

Controller

오케스트레이션의 두뇌 역할. 노드나 컨테이너, 엔드포인트가 다운됬을 때 알아차리고 대하는 역할을 담당한다. 또한 새로운 컨테이너를 들여올 지 결정하는 역할을 한다.

Container Runtime

컨테이너를 실행할 때 사용되는 기본 소프트웨어. 기본적으로는 docker를 사용하지만 다른 옵션(Rocket, CRI-O)들도 있다.

Kubelet (kube-command-line tool, kube-control)

각 노드에서 실행되는 agent. agent는 예상대로 컨테이너가 노드에서 실행되는 지 확인하고, 클러스터 상의 응용 프로그램을 배포 및 관리하는 역할을 수행한다. kubelet을 이용한 간단한 커맨드는 아래와 같다.

  • 클러스터에 응용 프로그램을 배포 : kubelet run  <응용 프로그램>
  • 클러스터 정보 보기 : kubectl cluster-info
  • 클러스터의 모든 노드 나열 : kubectl get nodes

Master, Worker Node components