Background
- 내가 이해한 쿠버네티스가 맞는지 기록하면서 한 번 더 리서치하고
- 쿠버네티스란 무엇인지 오케스트라 연주에 비유 하여 간단한 개념을 정리 해본다.
쿠버네티스 핵심 구성요소

출처: https://kubernetes.io/ko/docs/concepts/overview/components/
1. 쿠버네티스란?
- 쿠버네티스는 컨테이너를 실행하는 플랫폼이면서, 컨테이너 오케스트레이션 도구이다.
1-1. 쿠버네티스는 왜 오케스트레이션 도구인가?
- 악기 오케스트라 연주를 예로 들어보자
지휘자는 바이올린 n대, 첼로 n대, 심벌 n대 등 각 악기 구성들이 언제 어떻게 동작할지 조정한다.
- 그리고 각 악기 구성 별로 악기 1~2개 정도 이슈가 생겨도 연주에 이상이 없도록 운영할 수 있다.
- 실제 무대에서 그렇지 않겠지만, 이론상
바이올린 1개에 이상이 생겼다면 지휘자는 해당 바이올린을 무대에서 내리고 정상적인 바이올린으로 교체하여 원래의 바이올린 구성을 유지 시킬 수도 있다.
- 이러하듯, 지휘자를 포함한 연주자들의 모음은
쿠버네티스 클러스터와 비유할 수 있고,
- 지휘자는 쿠버네티스의
Control-Plane 에 비유할 수 있다.
- 또한, 바이올린 같은 각 악기는 클러스터 내에서 동작하는
Pod 와 같다고 보면 된다.
- 쿠버네티스 클러스터에서도 바이올린 역할을 하는
Pod 10개 중 2개가 장애 났을 때, 장애난 Pod 를 제거하고 신규 Pod 2개를 다시 구성하여 정상적이 바이올린 Pod 10개를 유지 시킬 수 있다.
2. 쿠버네티스의 두 가지 핵심 개념
2-1. 선언적 API
- 쿠버네티스 클러스터의 목적은 애플리케이션 실행이다.
- 실행하려는 애플리케이션을
YAML 포맷으로 작성한 후 위 쿠버네티스 구성요소 중 API Server 를 통해 제출 하면 애플리케이션이 클러스터에 배포된다.
- 바이올린은 3개 운영하고, YAMAHA사 제품을 사용하고, 가격은 150만원 ~ 200만원대로 구성하는 등의 악기
Spec 을 선언적으로 정의할 수 있다.
- 그렇다면, 바이올린 3개 운영(연주) 중 1개의 줄이 끊어진 경우 이슈 있는 악기는 버리고 새 악기로 다시 구성하여 연주를 이어 갈 것이다.
- 이렇게 애플리케이션 Spec 을 YAML 포맷으로 정의한 파일을
애플리케이션 매니페스트(Application Manifest) 라고 한다.
2-2. 클러스터
- 쿠버네티스 클러스터는 여러대의 노드(서버)가 하나로 운영 되는 논리적 개념이다.
- 각 노드에는 컨테이너 런타임(ex: 도커)이 실행 되고 있다.
- 위 예시와 같이 바이올린 3개를 운영하도록 정의하면, 각 바이올린은 여러 노드에 분포 되어 연주(운영) 된다.
- 그리고 클러스터 내 노드 중 장애가 발생한 노드 또한 제거하고 신규 노드로 구성할 수 있다.
- 여러 노드에 분포 된 Pod 끼리는 쿠버네티스 클러스터 자체 네트워크를 통해 통신할 수 있다.
3. 쿠버네티스 주요 기능 몇 가지

- 쿠버네티스는
분산 데이터베이스를 갖고 있다.
분산 데이터베이스에는 애플리케이션 구성 정보를 저장할 수 있다.(configmap)
그리고 API 키 또는 DB 접속 정보 같은 비밀 값(민감 정보)을 저장할 수 있다.(secret)
- 쿠버네티스는 스토리지를 제공한다.
각 노드의 로컬 디스크에 데이터를 저장할 수도 있고, 외부 스토리지와 연동하여 데이터를 저장할 수도 있다.(volume,storage class, pv, pvc)
- 쿠버네티스 API 로 들어오는 요청과 애플리케이션 요청을 모두 감시한다.
그리고 트리픽에 따라 애플리케이션 요청을 분산 관리 할 수 있다.(service, ingress, loadbalancer)
4. 참고 자료
다음 게시글: 쿠버네티스 학습 환경 세팅하기