배포 방식의 발전
❓ 어플리케이션 배포 방식을 시간의 흐름에 따라 살펴보면, 쿠버네티스가 어떤 일을 하고 현재 왜 유용하게 사용되는지 알 수 있다.
![](https://d33wubrfki0l68.cloudfront.net/26a177ede4d7b032362289c6fccd448fc4a91174/eb693/images/docs/container_evolution.svg)
전통적 배포
- 한 물리 서버에 여러 애플리케이션 실행 → 리소스 할당의 문제 ex) 한 애플리케이션이 서버의 모든 리소스를 전부 차지하여, 다른 애플리케이션의 성능 저하 발생
- 여러 물리 서버에서 여러 애플리케이션 실행하는 것은 어려움
가상화된 배포 (OS 가상화)
- 단일 물리 서버 CPU에서 가상화를 사용해 여러 가상 시스템(VM) 실행
- 각 VM은 가상화된 하드웨어 상 자체 OS를 포함한 하나의 완전한 머신 → 단점 : 무겁다
- 장점 : VM 간에 애플리케이션 격리, 보안성 제공 가능, 리소스 보다 효율적 활용 가능, 확장성 제공
컨테이너 개발 시대
- VM과 유사하지만 애플리케이션 간에 OS 공유해 가볍다. → 컨테이너 이미지 생성이 VM 이미지 생성보다 이 쉽고 효율적
- VM과 마찬가지로 컨테이너는 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간 등 존재
- 기본 인프라와 종속성 끊음 → 클라우드나 OS 배포본에 모두 이식 가능
컨테이너란?
❓ 배포 방식의 발전을 통해 알게된 컨테이너 개발 시대! 컨테이너가 무엇인지 간단하게 알아보자
- 호스트 OS 위에 게스트 OS 전체를 가상화(VM)하여 사용하는 방식은 무겁고 느리기 때문에 운영환경에서 사용 어려움 존재
- 프로세스 격리 를 통한 가볍고 빠르게 동작하는 방식의 동작 → “컨테이너”
- 하나의 서버위에 여러 컨테이너는 서로 영향을 미치지 않고 독립적으로 실행된다.
- 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼
- 컨테이너는 이미지를 실행해 생성된 상태
이미지란?
💡 컨테이너를 실행하기 위한 모든 정보를 담은 불변의 파일
- 이미지는 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것
- 상태값 가지지 않고, 변하지 않는다.
- 하나의 이미지로 여러 컨테이너 생성 가능
- 컨테이너의 상태가 바뀌거나 삭제되어도 이미지는 불변
쿠버네티스란?
❓배포 방식의 발전 그리고 컨테이너에 대해 알아보며 이해한 쿠버네티스의 역할
💡 쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼
- k와s 사이 8글자
k8s
또는 kube
라고 줄여부른다.
- 분산 시스템을 탄력적으로 실행하기 위해 프레임 워크 제공 → 컨테이너를 관리하고, 컨테이너가 다운 됐을 경우 다시 시작해준다.
Deployment
, StatefulSets
, DaemonSet
, Job
, CronJob
의 다양한 애플리케이션 배포 패턴을 제공한다.
참고 문서