
Kubernetes(K8s)
구글에서 개발한 컨테이너 오케스트레이션 기술
쿠버네티스를 이해하기 위해서는 컨테이너(Container)와 오케스트레이션(Orchestration)을 파악하고 있어야 한다.
Container
- 컨테이너는 격리된 가상 공간을 제공하는 기술로, 이미지를 실행한 실행 환경을 뜻한다.
* 이미지란? 애플리케이션을 실행하기 위해 필요한 코드, 라이브러리, 설정 파일, 종속성과 같은 정보를 포함한 패키지
- 컨테이너에서는 이러한 이미지를 패키징하고 격리하는 역할을 하고 있다.
- 피크닉을 즐길 수 있는 모든 재료와 도구(이미지)가 담긴 있는 피크닉 박스(컨테이너)라고 생각하면 편하다.
컨테이너가 없던 시절에 애플리케이션 실행 환경을 구축하기 위해서 무엇을 했을까? - 컨테이너 기술이 없던 시절에는 늘 다른 운영체제와 호환되는지 확인했어야 했다. - 라이브러리 버전을 각 운영체제마다 모두 다른 버전을 써야하는 상황이 발생하곤 했다. - 개발자가 새로 올 때마다 환경을 또 구축해야 하는 아주 불편한 일들이 많이 발생!!!!!!! - 정상 실행되는 애플리케이션일지라도, 다른 환경에서 같은 방식으로 실행될지 장담할 수가 없는 상황을 겪어 아주 난감!!!!!!! - 예전에는 위와 같은 일들 때문에 응용 프로그램을 개발하고 배포하는 게 정말 어려웠다. → 특히 호환성 |
- 기존 문제점(호환성, 종속성 반복 작업 등)을 해결하기 위해 컨테이너가 생겨났으며, Docker가 탄생하게 되었다.
- Docker는 컨테이너를 생성하고 실행할 수 있는 플랫폼으로, Docker를 구성하여 다양한 운영체제에서의 호환성을 신경쓰지 않고 애플리케이션을 실행할 수 있다.
- 격리된 가상 공간을 제공하는 기술(가상화 기술)은 컨테이너 말고 하나 더 있다!
바로바로 가상머신(Virtual Machine)
[가상머신과 컨테이너의 차이점]

구분 | 가상머신 | 컨테이너 |
운영체제 | 각 가상머신마다 독립적인 OS 포함 | 호스트 OS 공유 |
자원 소모 | 높은 자원 소모(OS와 애플리케이션, 필요 파일 포함) GB 단위 |
가볍고 빠른 성능(애플리케이션과 필요 파일만 포함) MB 단위 |
시작 속도 | 상대적으로 느림(각 VM마다 OS를 실행해야 함) | 매우 빠름 |
격리 방식 | 하이퍼바이저를 통한 하드웨어 레벨 격리 | 커널 레벨 격리(리눅스 컨테이너 기술) |
일관성 | OS 종속적이므로 환경이 다르면 설정이 복잡해질 수 있음 | 호환성 높음, 환경 일관성 유지 |
주요 용도 | 멀티 OS 실행 환경, 테스트 및 개발 | 클라우드 애플리케이션 배포, 마이크로서비스 환경 |
* 하이퍼바이저란? 여러 가상 머신을 실행할 수 있도록 도와주는 가상 머신 관리 프로그램
Orchestration
- 여러 개의 컨테이너를 효과적으로 관리하고 자동화하는 기술
- 예를 들어, 하나의 컨테이너로 운영되는 애플리케이션에 사용자 수가 증가하여 확장해야 하는 상황이 발생했다. 애플리케이션을 어떻게 확장할 것인지? 얼마나 확장해야 하는지? 이것을 다 수동으로 해야되는지? 정말 난감하다......
- 이러한 문제점을 해결하기 위해 오케스트레이션이 등장하였다.
[오케스트레이션 주요 기능]
1. 애플리케이션의 부하에 따라 컨테이너를 자동으로 배포하고 수를 조절
2. 여러 컨테이너에 트래픽을 균등하게 분배하는 로드 밸런싱
3. 컨테이너 간의 원활한 통신을 위해 네트워크를 구성하고, 서비스 디스커버리를 통해 컨테이너 위치 파악
4. 문제 발생 시 컨테이너 자동 재시작 및 재배치 → 애플리케이션 가용성 향상
5. 코드 업데이트 시 자동 배포 진행
6. 문제 생길 경우 이전 버전으로 롤백
- 이러한 컨테이너 관리 및 자동화를 돕는 도구가 바로 Kubernetes(k8s)이다.
- 물론 쿠버네티스 말고도 여러 오케스트레이션 도구(Docker Swarm, Apache Mesos)가 존재한다!
'쿠버네티스' 카테고리의 다른 글
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 |