쿠버네티스란?
쿠버네티스는 컨테이너 개발에 있어 컨테이너화된 애플리케이션을 탄력적으로 실행하기 위한 프레임워크를 말한다
컨테이너화된 애플리케이션의 로드밸런싱 & 시크릿 관리 등을 원활히 하도록 돕는다
* 로드벨런싱 : 컴퓨터 네트워크 기술 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 뜻함
배포를 돕는 것 뿐만 아니라 배포가 잘못되었을 경우 유연한 대처(롤백)이 가능하도록 한다
쿠퍼네티스를 이용하면 부하가 많아질때마자 특정 이미지로 빠르게 앱을 여러개로 배포할 수 있다
또, 어떠한 인스턴스가 다운됐다고 가정할 때 다른 인스턴스가 자동으로 생성되어 수초 이내로 되돌아갈 수 있도록 설정이 가능하고, 부하에 따라 오토스케일 명령 또한 가능하다
따라서 컨테이너 기반 애플리케이션 서비스의 트래픽이 증가하는 등의 확장 혹은 고도화가 진행되는 상황이라면, 쿠버네티스 도입은 고민해봐야한다
도커와 쿠버네티스 관계
도커와 쿠버네티스 둘 다 컨테이너 기반의 애플리케이션 배포 및 관리에 관련된 기술이지만 서로 다른 역할을 수행하며 상호보완적인 관계를 가진다
도커
- 도커는 컨테이너 기술을 구현하고 관리한다
- 컨테이너 이미지를 빌드하고 배포하며 실행하는데 중점을 둔다
- 애플리케이션을 격리된 환경인 컨테이너로 패키징해 이식성을 향상시킨다
쿠버네티스
- 쿠버네티스는 컨테이너 오케스트레이션 플랫폼이다
- 여러 대의 서버에 분산되어있는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리하는 기능을 제공한다
- 애플리케이션 상태를 유지하고 컨테이너를 적절한 노드에 배치해 안정적인 운영을 지원한다
종합적으로 도커는 컨테이너를 생성하고 관리하는 역할에 중점을 두고, 쿠버네티스는 여러대의 서버에 분산된 컨테이너를 효율적으로 관리하고 스케일링하는 역할에 중점을 둔다.
컨테이너 오케스트레이션?
컨테이너 오케스트레이션은 여러 개의 컨테이너를 조율하고 관리하는 프로세스를 의미한다
분산된 환경에서 여러개의 컨테이너로 이루어진 애플리케이션을 효율적으로 관리하고 실행하는걸 목표로 한다
오케스트레이션은 아래와 같은 주 작업들을 자동화하고 중앙에서 관리해 복잡한 분산시스템을 쉽게 관리할 수 있도록 한다.
- 배포 (Deployment): 여러 대의 서버에 컨테이너를 배치하고 실행하는 작업을 관리한다. 새로운 버전의 애플리케이션을 롤아웃()하거나, 스케일링 해 컨테이너 수를 동적으로 조정하는 등이 여기 해당한다
- 스케일링(Scaling): 트래픽이나 부하에 따라 컨테이너 수를 자동으로 늘리거나 줄이는 작업을 수행한다. 이를 통해 애플리케이션 성능과 가용성을 유지할 수 있다
- 로드밸런싱(Load Balancing): 여러 대의 서버에 분산된 컨테이너 간에 트래픽을 균등하게 분배해 각 서버에 일관된 부하를 유지한다
- 상태 관리(State Management): 애플리케이션의 상태를 지속적으로 모니터링하고 필요한 경우에 대응해 안정적인 상태를 유지한다
- 자동 복구(Automatic Recovery): 오류 또는 장애가 발생했을 때 자동으로 복구하고, 문제가 있는 컨테이너를 자동으로 다시 시작한다
쿠버네티스 기본요소 - 노드
2-1. 클러스터란
쿠버네티스 내 가장 큰 단위로, 가상 서버들이 속한 클라우드를 뜻한다
쿠버네티스에서 서버는 노드라는 단위로 불리므로, 클러스터란 마스터 노드와 워커노드를 합친것이라 해석할 수 있다
2-2. 노드란
노드란, 클러스터 내 가상 서버 즉, 컴퓨팅 엔진 단위라고 이해하면 된다
클러스터 다음으로 큰 단위로 마스터 노드와 워커노드로 분리되어있다
- 마스터 노드: 전체 쿠버네티스 시스템을 관리 및 통제하는 컨트롤 플레인을 관장한다
- 워커 노드: 배포하고자 하는 어플리케이션의 실제 실행을 수행
마스터노드가 죽으면 클러스터를 관리할 노드가 없기에 일반적으로 3개 정도의 마스터노드를 띄워관리하는 것으로 알려져있고, 워커노드도 여러개 구성할 수 있다
쿠버네티스 구성요소 - 파드
파드란, 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위다
그와 동시에 하나 이상의 컨테이너 그룹을 뜻한다
포드에 정의된 여러개의 컨테이너는 하나의 완전한 애플리케이션으로 동작합니다.
즉, 서로 다른 컨테이너들이 각자 다른 역할을 수행해 하나의 완전한 어플리케이션을 구성합니다
따라서 포드에 컨테이너 여러개를 포함시킬 경우 각 컨테이너가 서로 다른 역할을 수행하도록 구성하는 것이 좋다
쿠버네티스 크기 단위는 크게 클러스터 > 노드 > 파드 > 컨테이너로 구성, 분리되어있다