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
'Devops > Kubernetes' 카테고리의 다른 글
[Kubernetes] YAML 파일로 컨테이너 배포하기 (0) | 2023.11.12 |
---|---|
[Kubernetes] Minikube로 Kubernetes 환경 구축하기 (0) | 2023.11.08 |