Skip to content

Latest commit

 

History

History
43 lines (30 loc) · 2.69 KB

Kubernetes.md

File metadata and controls

43 lines (30 loc) · 2.69 KB

Kubernetes

Docker

서비스에 필요한 os, lib, app을 하나의 컨테이너로 패키징할 수 있다.

os(리눅스)에서 컨테이너 기술을 지원하고, 도커는 컨테이너를 실행하기 위한 시스템 라이브러리 같다고 보면 된다(컨테이너 기술을 이용한 오픈소스).

도커는 컨테이너를 이미지 파일로 빌드해서 어디서나 배포하고 실행할 수 있게 해주는 오픈소스다. 그래서 컨테이너는 이미지 단위로 실행된다.

  1. 도커 이미지를 빌드하기 위해 Dockerfile 을 작성한다(도커 이미지를 어떻게 빌드해 라는 명령들이 있는 텍스트파일).
  2. Dockerfile 과 함께 도커 빌드 요청을 보낸다.
  3. 도커 서버에서는 도커 이미지를 빌드하여 그 이미지를 로컬 저장소에 저장한다.
  4. 도커 push 명령을 받으면 도커 서버는 로컬의 도커 이미지를 도커 레지스트리에 올린다.
  5. 도커 run 명령을 배포할 도커 서버에 전송한다.
  6. 도커 run 명령을 받은 도커 서버는 도커 레지스트리에 이미지를 로컬 저장소로 다운 받는다.
  7. 도커 이미지를 이용하여 컨테이너를 시작한다.

NameSpaces

Linux Namespaces 는 프로세스에게 격리된 OS View 를 제공하는 커널 기술이다(컨테이너에 제일 중요한 기술). chroot 같이 디스크 마운트 경로만 다르게 제공하는게 아니라 네트워크, 호스트네임, 사용자 계정, 프로세스 아이디영역도 다르게 보여준다.

Linux Namespaces 는 pid, net, ipc, mnt, uts, user 등의 6개 리소스에 대한 네임스페이스를 제공한다. 프로세스 생성 시점에 어떤 네임스페이스를 사용할지 선택할 수 있고 프로세스는 선택한 네임스페이스 별로 격리된다.

Cgroup

cgroups (Control Group) 은 어플리케이션 (프로세스) 에게 하드웨어 리소스 (ex. CPU, MEM, Disk, Network, …) 를 그룹으로 묶어서 할당하는(제한할 수 있는) 기술이다.

namespace를 통해 서로 안보이는것만으로는 충분하지 않고, 안보이는 얘들끼리 시스템 리소스를 얼마만큼 사용할 것인지 제한을 걸어둬야 한다. 그걸 걸 수 있는게 cgroup이다.

Union Filesystem

도커 컨테이너가 Namespace 와 Cgroup 에 의해 격리될때 컨테이너가 사용할 파일 시스템도 격리되어야 한다.
Union File System (UnionFS) 은 서로 다른 파일 시스템이나 디렉토리를 합쳐서 하나의 논리적인 파일 시스템으로 컨테이너에게 제공한다.

Kubernetes

참고 : edu-docker 이종현님 강의