Skip to content

Latest commit

 

History

History
102 lines (55 loc) · 3.4 KB

1회_230515_최용환_쿠버네티스.md

File metadata and controls

102 lines (55 loc) · 3.4 KB

Containers & VMs

가상화의 목적은?

  • 사용하는 자원의 통제
  • 인프라 관리의 간편화 → 어플리케이션의 수평확장에 효과적

VM와 컨테이너의 차이는?

image

  • VM은 Hypervisor 위에서 올라가고, 그 위에 OS를 설치해서 다시 그 위에 컴퓨터를 구성한다.
  • Container의 경우 OS에 컨테이너 엔진 (런타임)을 설치하고 그 위에 바로 올라간다.
  • Hypervisor는 하드웨어의 리소스를 분리해서 각각의 VM에 할당해서 별개의 기기처럼 작동한다.
  • 컨테이너의 경우 리소스에 cgroup으로 할당할 수 있는 프로세스에 제약을 걸어 각 컨테이너가 사용할 수 있는 한계치를 조정할 수 있다. → VM보다 훨씬 가벼움

컨테이너에 사용되는 리눅스 커널의 요소

Control Groups

프로세스들을 자원에 연결해주고 총량을 한정해 줄 수 있음

Subsystems가 자원이고, 이걸 추상화해서 연결한게 cgroups

메모리 ,CPU time, Block I/O, pids, etc.

모든 subsystem은 계층형으로 구조되어있음

/sys/fs/cgroup 에 cgroup으로 엮인 pid들을 모아놓음

/proc/{pid}/cgroup 에 해당되는 그룹들또한 확인 가능

/sys/fs/cgroup/pids/${group_name}/pids.max 에서 자원에 할당 가능한 최대 프로세스 수 조정 가능

도커 컨테이너를 띄우면 /sys/fs/cgroup/{container_id} 의 경로에 나옴

Namespaces

리소스의 접근, 그리고 발견을 통제함

네임스페이스의 종류

  • 네트워크
  • 프로세스
  • 파일시스템
  • 유저, 그룹 ID

등등…

각각 리소스 별로 다른 네임스페이스로 연결할 수 있음

네트워크

veth로 연결함

도커에서는 자동으로 컨테이너 별로 별개의 네트워크 생성

그러나 k8s 같은 오케스트레이션 툴에서는 전체적인 뷰를 가지고 있음

마운트 (파일시스템)

컨테이너에 자신만의 파일시스템을 제공

호스트의 파일은 가림

procfs

네임스페이스 각각으로 향하는 심볼릭 링크 보관중

이 심볼릭 링크로 컨테이너가 속한 네임스페이스들을 추적할 수 있음

네임스페이스 생성

clone : 프로세스가 생성되면서 새로운 네임스페이스를 생성함

unshare : 이미 존재하는 프로세스에서 새로운 네임스페이스를 생성함

이미지

시스템의 “상태”를 저장해놓은 파일

레이어

이미지는 여러개의 레이어로 되어있고,

기존에 존재하는 이미지를 레이어로 포함하여 여기에 추가한 파일들을 기존 레이어 위에 올려 상위 레이어가 수정되고, 하위 레이어가 타 레이어를 불러온다

e.g. ) 기반 이미지의 내용을 일부 지워도, 이미지로 업로드할때 위에 레이어를 하나 올려 내용을 삭제한 기록을 저장함

/var/lib/docker/overlay2 생성한 레이어들을 저장함

Dockerfile에서 FROM, RUN, COPY 등의 명령어 하나당 새로운 레이어를 생성함

overlay

image

컨테이너 오케스트레이션이란?

컨테이너들을 모아서 관리해주는 툴

image