- VM (Vittual machines)
- 하이퍼바이저(가상 머신 모니터)
- 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼
- cpu, 메모리, 스토리지 등의 리소스를 에물레이션 -> 한대의 서버에 독립된 여러 머신 환경을 구성 가능
- 저수준 하드웨어 장치를 가상화
- 장점
- 같은 서버에 다양한 운영체제를 실행
- 물리머신 대비 동일한 자원을 더 효율적으로 사용
- 물리머신 대비 빠른 서버 프로비저닝
- 단점
- OS 이미지, 라이브러리, 어플리케이션 등을 반복적으로 포함
- 컨테이너(containers)
- 애플리케이션 구동에 필요한 모든 종속성을 포함한 소프트웨어 패키지를 운영체제 위에서 가상화
- 장점
- 컨테이너를 어느 환경에나 배포 가능
- OS를 부팅하거나 라이브러리를 로드할 필요가 없음
- 가상환경을 더 효율적이고 경량으로 생성 가능
- 수 초 이내의 빠른 시작 시간
- 하나의 호스트에 더 많은 어플리케이션 실행 가능
- OS 패치 업데이트 등 유지 관리와 관련된 오버헤드 감소
- 단점
- 컨테이너가 정의된 운영체제에 종속성
- CNCF
- 벤더 중립적인 클라우드향 오픈소스 프로젝트를 관리하는 재단
- 대표 프로젝트 : 쿠버네티스, HELM, CoreDNS, etcd, fluentd, containerd, Prometheus 등
*클라우드 네이티브
-> 퍼블릿/프라이빗/하이브리드 클라우드 환경에서 확장 가능한 형태로 빠르고 민첩하게 애플리케이션을 빌드하고 실행 목표
-> 뒷받침하는 기술 : 컨테이너, 마이크로서비스, 서비스 메시, 변경할 수 없는 인프라 등- CNCF에 등록된 프로젝트 100개 이상 + 벤더 제품들
-> 개별 툴의 기능을 살펴보는 방식으로 접근은 한계, 풀어야 하는 문제나 프로세스를 이해하고, 거기에 맞는 도구를 선택
컨테이너(런타임)와 관련된 두가지 표준
*해결책 : Low level 컨테이너 런타임 표준 구성
OCI (open container initiative)
: 컨테이너 형식과 런타임의 업계 표준을 구성 (Docker, IBM, CoreOS, Google, MS,,)
/ 현재 대부분의 컨테이너 런타임이 이 형식을 따름
OCI 런타임
: 컨테이너 실행에 필요한 저수준 컨테이너 런타임
runc
: OCI 스펙에 따라 컨테이너를 생성 및 실행하기 위한 CLI 도구
*해결책 : High level 컨테이너 런타임 표준 구성
CRI(container runtime interface)
: 쿠버네티스에서 다양한 컨테이너 런타임을 사용할 수 있도록 하는 플러그인 인터페이스 / 현재 대부분의 컨테이너 런타임이 이 형식을 따름
CRI runtime
: 컨테이너 실행에 필요한 고수준 컨테이너 런타임 / 컨테이너 라이프 사이클, 이미지 등을 관리
쿠베네티스에서 지원하는 컨테이너 런타임 종류
: containerd, CRI-O, Mirantis Container Runtime, Docker Engine
*3개 주요 리눅스 계열로 정리 가능
1) Debian 계열
2) Red Hat / Fedora 계열
3)openSUSE 계열
1) 리눅스 커널
2) 리눅스 커널 접근
3) 커널
4) 리눅스 커널의 주요 기능
하드웨어 관리 및 추상화
프로세스와 쓰레드 관리
메모리 관리
I/O 관리
1) AWS에 리눅스 실행 환경 구성