쿠버네티스와 컨테이너, 도커에 대한 기본 개념
컨테이너
구동하려는 애플리케이션을 실행할 수 있는 환경까지 감싸서 어디서든 쉽게 실행할 수 있도록 해주는 기술
ex. 환경 구축 시에 내 컴퓨터에 필요한 옵션을 일일이 맞춰야하는 불편함
→ 컨테이너 환경을 묶어서 배포한 컨테이너 이미지라는 프로그램을 내려받으면 불편함 해소
컨테이너 런타임
컨테이너를 사용할 때 필요한 도구
ex. 도커
쿠버네티스
컨테이너 런타임을 통해 컨테이너를 오케스트레이션 하는 도구 → 컨테이너를 다루는 도구
*오케스트레이션 : 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위
그러니까 도커 이외에 다양한 컨테이너 런타임 소프트웨어 사용 가능
- 여러 서버(노드)에 컨테이너를 분산해서 배치
- 문제가 생긴 컨테이너 교체
- 컨테이너가 사용할 비밀번호나 환경설정 관리 및 주입
- ⇒ 컨테이너 오케스트레이션
가상머신 vs 컨테이너
Traditional Deployment
가상화 이전 가장 오래되고 단순한 방식
물리적인 컴퓨터 한 대에 하나의 OS를 깔고 여러가지 프로그램을 설치하는 방식
단일 목적 시스템에 적합
문제점
한 대의 컴퓨터에서 모든 것을 처리하므로 프로그램의 간섭 또는 성능 저하, 더 나아가 프로그램 중단까지 유발 가능
Virtualized Deployment
가상머신을 기반으로 배포하는 것
→ 가상머신 사용으로 인해 Traditional Deployment의 문제점 해결
문제점
Traditional Deployment보다 효율적이지만, 가상머신은 완전한 컴퓨터이고 가상머신에 일일이 운영체제를 설치해야하기 때문에 container Deployment 보다는 무거움
용어정리
Hypervisor : 하나의 시스템 상에서 가상 컴퓨터를 여러 개 구동할 수 있도록 해주는 중간 계층
App : 실행하고자 하는 프로그램
Bin/Library : 프로그램이 실행하는데 필요한 환경과 관련된 파일
가상머신 : 가상 컴퓨터
Container Deployment
컨테이너 중심으로 배포하는 것
→ Virtualized Deployment과 달리 OS를 매번 설치하는 번거로움이 없음
하나의 OS 상에서 구동하면서도 프로그램 실행 시 간섭을 일으킬 수 없는 장벽을 치면서 자원 또한 독립적으로 사용할 수 있도록 할당하고 관리가 가능
컨테이너 동작 방식을 OS 커널을 공유하는 가상화라고 표현
문제점
컨테이너는 OS를 공유하는 방식이기 때문에,내 프로그램의 문제가 OS에 문제를 일으킬 경우에는 OS에서 구동 중인 전체 컨테이너의 문제가 될 가능성이 있음
Traditional Deployment | Virtualized Deployment | Container Deployment | |
컴퓨터 | 물리적인 컴퓨터 1대 | 물리적인 컴퓨터 1대에 다수의 가상머신 존재 | 컴퓨터 형태에 영향 X |
OS | 물리적인 컴퓨터 1대 - OS 1개 | 물리적인 컴퓨터 OS 1대 + 다수의 가상머신에 각각 OS 설치 | 컴퓨터 형태와 관련없이 설치된 OS 1개 |
리소스 | 컴퓨터 1대의 자원을 여러 프로그램이 나눠 씀 | 하이퍼바이저를 통해 가상머신 별 개별적 자원 할당 | OS에서 프로그램 별로 자원을 할당하고 관리 |
격리 수준 | 격리되지 않아 프로그램 간 간섭 발생 | 각 가상머신이 완전하게 격리 | 프로그램 실행 환경은 격리되지만 OS 환경은 공유 |
문제 전이 가능성 | 특정 프로그램의 문제가 시스템 전체의 중단을 가져올 수 있음 | 특정 가상머신의 문제가 다른 가상머신의 문제로 전이될 가능성이 낮음 | 특정 프로그램의 문제가 다른 프로그램에 간섭을 일으키지는 않지만, 특정 프로그램의 문제가 OS 문제를 유발할 경우 시스템 중단 가능성 있음 |
요약
개념
쿠버네티스는 컨테이너를 다루는 도구
컨테이너는 애플리케이션을 실행할 수 있는 환경까지 감싸서 쉽게 실행할 수 있도록 하는 기술
컨테이너 런타임은 컨테이너를 다루는 도구
컨테이너 런타임 중에 가장 유명한 것이 도커
오케스트레이션은 컨테이너 및 사용하는 환경 설정을 관리하는 행위
쿠버네티스는 컨테이너 런타임을 사용해 컨테이너를 오케스트레이션 하는 도구
애플리케이션 배포 환경의 변화
전통적 배포 → 가상화 배포 → 컨테이너 중심의 배포
점점 문제점 해결
- 프로그램 간섭/성능저하 문제 → 가상머신으로 해결
- 무거운 환경 문제 → 컨테이너 사용으로 해결 (OS 하나만 사용)
그치만 컨테이너 중심의 배포도 유의할 점은 있다.
→ OS문제 유발 시 그 OS에서 구동 중인 전체 컨테이너의 문제로 이어질 가능성
Reference
'Cloud' 카테고리의 다른 글
쿠버네티스 알아보기 3 (쿠버네티스 컴포넌트) (0) | 2022.10.18 |
---|---|
쿠버네티스 알아보기 2 (쿠버네티스 플랫폼) (0) | 2022.10.11 |
댓글