1. 쿠버네티스 소개하기
1.1 Container
리눅스는 프로세스별로 자원을 격리해서 사용하는 cgroup과 특정 디렉터리로 권한을 제한하는 chroot등으로 격리 환경을 구성할 수 있다. 여기서 디스크의 파일 변경 사항을 레이어 형태로 저장하는 파일 시스템을 합해 컨테이너라는 개념이 탄생했다.
가상화나 클라우드 컴퓨팅을 설명할 때는 가상 머신을 많이 언급했다. 컨테이너와 vm는 아래와 같은 차이가 있다.
🖥 VM
VM은 컴퓨팅 환경을 소프트웨어로 구현한 것 즉, 컴퓨터를 애뮬레이션하는 소프트웨어이다.
Host OS가 있고, Hypervisor(VMWare, KVM, Xen, etc)가 하드웨어를 가상화한다.
VM은 Hypervisor에 의해 독립된 가상 하드웨어 자원을 할당 받으며, 가상 머신마다 게스트 운영체제가 있고 그 위에 앱이 위치한다.
논리적으로 분리되어 있어 한 VM에서 오류가 발생해도 다른 VM에 영향을 미치지 않는다는 장점이 있다.
🖥 Container
Container는 실행하고 있는 프로세스 + 작은 리소스 그룹의 조합이다.
Docker Engine이 Host OS 위에서 수행된다.
VM처럼 Hardware 가상화가 아닌 Process Isolation를 해주고, Filesystem 가상화만 이루어진다.
Container는 게스트별로 독립적인 공간을 제공하고 리소스를 격리시키는 리눅스의 namespace 개념과 자원에 대한 제어를 가능하게 해주는 리눅스 커널 기능 Control Groups를 적용시킨다.
따라서 리눅스 개념을 적용시키 때문에 Container는 Linux 기반 OS만 수행이 가능하다.
따라서 Mac이나 Window가 Host OS인 경우, Docker 설치 시 Linux 가상머신이 설치된다.
>>> Docker Engine에 대해 알아보기 <<<
1.2 컨테이너 오케스트레이션 시스템
컨테이너를 이용하면 개발 환경과 운영 환경의 차이 때문에 일어나는 많은 장애를 막을 수 있다. 하지만 컨테이너만으로 실제 사용 서비스를 운영하기에는 부족한 부분이 있다. 컨테이너 오케스트레이션 시스템은 컨테이너의 부족한 부분을 채워주는 역할을 한다.
컨테이너 오케스트레이션 시스템의 필요성을 아래 두 상황을 통해 알 수 있다.
여러 대의 서버를 사용해 상용 서비스를 제공하고 있는 상황이다.
✅ 컨테이너 오케스트레이션 없는 경우,
서버에 장애가 오는 상황에 대비해 여러 대의 서버를 사용해서 상용 서비스 하나를 구성한다고 했을 때,
컨테이너 이미지를 만들고 여러 대 서버에 컨테이너를 배포하는 전체 과정을 수동으로 제어해야 한다.
서버에 장애가 발생했을 때 해당 서버의 컨테이너를 다른 서버로 옮기는 등의 작업도 직접해야 한다.
✅ 컨테이너 오케스트레이션 사용하는 경우,
수동 제어 부분을 모두 자동화하기 때문에 시스템 운영이 수월해진다.
상용 서비스에 사용할 서버들을 클러스터로 구성하면, 컨테이너를 한 번의 명령으로 자동 배포할 수 있다.
또한, 사용 중인 클러스터 일부에 장애가 발생하면 오케스트레이션 시스템은 알아서 장애가 발생한 서버에 있는 컨테이너들을 정상 운영 중인 다른 서버로 옮겨서 실행시킨다.
1.3 쿠베네티스의 특징
✅ 선언적 API
컨테이너가 어떤 상태이길 원하는지 쿠버네티스에 설정하면 지속해서 컨테이너의 상태를 확인한다. 설정한 상태가 아니라면 그것에 맞게 맞춰준다.
선언적 특징이 없다면 사용자가 컨테이너를 계속해서 확인하고 관리해야 한다. 쿠버네티스의 선언적 특징을 이용하면 원하는 상태만 쿠베네티스에 정의해 유지할 수 있기 때문에 관리 비용이 많이 줄어든다.
✅ 워크로드 분리
http://www.yes24.com/Product/Goods/85578606
쿠버네티스 입문 - YES24
현업의 운영 경험을 바탕으로 엄선한 쿠버네티스 입문 A~Z현재 다양한 인프라 구축의 핵심 기술은 컨테이너이다. 운영체제, 데이터베이스, 웹 서버 등 인프라 구축에 필요한 컨테이너 이미지 각
www.yes24.com
https://velog.io/@bsjp400/Docker-docker와-VM의-차이
[Docker] docker와 VM의 차이
가상화 기술이 나오기전엔 한대의 서버를 하나의 용도로만 사용그러다보니 남는 서버 공간은 그래도 방치되게 됌또한 하나의 서버에 하나의 운영체제, 하나의 프로그램만을 운영따라서 안정적
velog.io
Docker 소개
Docker란 무엇인가? 개념 잡기 Docker는 Linux 기반의 Container RunTime 오픈소스이다. 처음 개념을 잡기가 조금 어려운데, Virtual Machine과 상당히 유사한 기능을 가지면서, Virtual Machine보다 훨씬 가벼운..
bcho.tistory.com
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
초보를 위한 도커 안내서 - 도커란 무엇인가?
도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이
subicura.com