쿠버네티스는 컨테이너를 효과적으로 관리하고 자동화하는 기술(오케스트레이션)을 제공하는 도구이다.
쿠버네티스를 사용하기 위해 필요한 용어들을 살펴보려고 한다.
Node(Minions)

- 쿠버네티스가 설치된 머신(물리 혹은 가상)
- 노드는 워커 노드(Worker Node)라고 불리며, 과거에는 미니언(Minion)이라고 불렸다.
- 애플리케이션을 실행 중인 노드에 문제가 생기면 어떻게 될까? → 당연히 애플리케이션이 다운된다... 그러므로 하나 이상의 노드를 꼭 확보해야 한다.
Cluster

- 그룹화된 노드의 집합
- 여러 노드를 이용하여 부하를 분산하는 데 도움을 주며, 한 노드가 먹통이 되어도 다른 노드에서 접근할 수 있어 가용성을 높인다.
Master

- 노드의 집합인 클러스터를 관리하는 노드
- 클러스터 정보 저장, 노드 모니터링과 같은 역할을 하며, 워커 노드에서 컨테이너를 실제로 오케스트레이션하는 역할을 담당한다.
구성 요소
1. API 서버
- 쿠버네티스의 프론트엔드 역할
- 사용자, 관리 장치, 커맨드 라인 인터페이스 등은 모두 API 서버와 통신하여 쿠버네티스 클러스터와 상호작용 한다.
2. ETCD 키-값 저장소
- 쿠버네티스가 클러스터를 관리하는 데 사용하는 모든 데이터를 저장하는 공간
- ETCD는 클러스터 내 모든 노드에 대한 정보를 분산해서 저장한다.
- 마스터 간에 충돌이 일어나지 않도록 클러스터 내에서 잠금을 구현하는 역할을 담당한다.
3. 스케줄러
- 여러 노드에 작업이나 컨테이너를 분배한다.
- 새로 생성된 컨테이너를 찾아 노드에 할당하는 역할을 담당한다.
4. 컨트롤러
- 노드나 컨테이너 혹은 엔드포인트가 다운되었을 때 이를 감지하고 대응하는 역할을 담당한다.
- 오케스트레이션의 두뇌라고 생각하면 편하다.
5. 컨테이너 런타임
- 컨테이너를 실행하는 데 사용되는 기본 소프트웨어(= 엔진)
- Docker, Rocket, CRIO와 같은 런타임을 사용할 수 있다.
6. Kubelet
- 클러스터의 각 노드에서 실행되는 에이전트
- 워커 노드와 마스터 노드 간의 인터페이스 역할을 담당하며, 컨테이너가 올바르게 실행되고 있는지 확인한다.
Master vs Worker

- 마스터 노드로 만드는 요소는 kube-apiserver이다.
- 마스터 노드에는 수집 정보를 저장하는 키-값 저장소(ETCD 프레임워크 기반), 컨트롤러 매니저, 스케줄러를 가지고 있다.
- 워커 노드에는 마스터와 상호작용하기 위한 kubelet agent가 있다. → 워커 노드의 상태 정보를 제공, 마스터 노드가 요청한 작업 수행
- 워커 노드는 컨테이너가 호스팅되는 공간이기 때문에 컨테이너 런타임이 설치되어 있어야 한다.
쿠버네티스의 명령 도구 kubectl or kube control
쿠버네티스 클러스터에 애플리케이션을 배포하고 관리, 정보 얻기, 노드 상태 확인 등 다양한 작업을 수행하는 데 사용된다.
[핵심 명령어]
- kubectl run: 클러스터에 애플리케이션을 배포
- kubectl cluster-info: 클러스터 정보 조회
- kubectl get pod: 클러스터의 모든 노드 나열
'쿠버네티스' 카테고리의 다른 글
YAML 파일을 쿠버네티스에 적용하기 - ReplicaSet (0) | 2024.11.12 |
---|---|
YAML 파일을 쿠버네티스에 적용하기 - Pod (0) | 2024.11.11 |
YAML 파일이란? (0) | 2024.11.11 |
쿠버네티스 Pod란? (0) | 2024.11.08 |
쿠버네티스 개요 - 컨테이너와 오케스트레이션 (0) | 2024.10.31 |