모음/[쿠버네티스 인 액션]

[쿠버네티스 인 액션] 1장. 쿠버네티스 소개 - 컨테이너 기술 소개 w.쿠버네티스 TV, 악분 일상

ttoance 2024. 8. 15. 23:43

 

1. 쿠버네티스와 같은 시스템이 필요한 이유 

- 조금 뻔한 내용이 많아서 패스

 

2. 컨테이너 기술 소개 

1) 리눅스 컨테이너 기술 

- 동일한 호스트 시스템에서 여러 개의 서비스를 실행할 수 있으며 동시에 서로 다른 환경을 만들어줄 뿐만 아니라 

- 가상머신과 유사하게 서로 격리하지만 오버헤드가 훨씬 적음 

 

2) 컨테이너와 가상머신 비교 

[가상머신]

- 호스트에 가상머신 3개를 실행하면, 3개는 각각 완전히 분리된 운영체제가 실행되고 동일한 베어메탈 하드웨어를 공유한다. 

- 가상머신 아래에는 물리적 하드웨어 리소스를 각 가상머신 내부의 운영체제에서 사용할 수 있는 더 작은 리소스로 나누는 호스트OS와 하이퍼바이저가 있음. 

ㄴ 해당 가상머신 내에서 실행되는 애플리케이션의 가상머신의 게스트 OS 커널에 대한 시스템 콜을 수행하면, 커널은 하이퍼바이저로 호스트의 물리적 CPU에서 x86명령을 수행한다. 

- 자체 시스템 서비스를 사용하게 때문에 부팅이 필요하다. 

 

[컨테이너]

- 호스트 os에서 실행되는 동일한 커널에서 시스템 콜을 수행한다. 

- 이 커널은 호스트의 cpu에서 x86명령을 수행하는 유일한 커널이다. 

- 컨테이너 실행하면 즉시 시작된다. 

 

 


조금 어려운 내용이라 아래 유투브 내용을 참고했다. 

 

쿠버네티스TV 

컨테이너 기술과 가상화 기술의 차이점 (youtube.com)

베어메탈 -> 가상화 -> 컨테이너로 발전 중
가상 머신은 게스트OS가 필요하고, 자원 필요하면 스케일업을 컨테이너는 스케일아웃을 해도 된다. 가상 머신의 경우, 윈도우하드웨어에 맥 os가 올라가지만, 컨테이너는 윈도우하드웨어에 맥 os가 몰라가지 못한다.

 

하드웨어 가상화는 게스트 OS가 필요한데 이게 부팅에 분단위 시간이 소요된다고 한다. 컨테이너가 부스팅 이벤트에 적합하다고 함.

 

 


3) 컨테이너 격리를 가능하게 하는 2가지 매커니즘 소개 

📍 리눅스 네임스페이스 : 각 프로세스가 시스템(파일, 프로세스, 네트워크 인터페이스, 호스트 이름 등)에 대한 독립된 뷰만 볼 수 있도록 함

ㄴ 프로세스는 하나의 네임스페이스에만 속하는 것이 아니라 여러 네임스페이스에 속할 수 있음.

📍 리눅스 컨트롤 그룹 : 프로세스가 사용할 수 있는 리소스(CPU, 메모리, 네트워크 대역폭 등)의 양을 제한한다. 

 

 

 


네임스페이스에 대해 자세히 설명한 유투부를 찾았다. 

컨테이너 생성 단계 분석 1편 - 리눅스 namespace (youtube.com)

프로세스마다 namespace를 분리해서 가지게 된다.

 

 

리눅스 부팅을 하면 init 프로세스가 실행되고, 그 이후의 프로세스들은 대부분 이 네임스페이스를 공유한다.

 

cd ns를 하면 네임스페이스가 나온다.

 

리눅스 os 입장에서는 container application이 있고 여기서 프로세스를 만드는 구조이다.

 

sudo docker run --rm -it -name="abcd" ubuntu:latest /bin/bash
ps -ef | grep docker
pstree -p

 

docker 컨테이너 프로세스

 

컨테이너 안에서 sleep 10000을 실행하면, (13:32)

도커 컨테이너 안에서 sleep 명령하면 docker 안에서 관리하는게 아니라 리눅스에서 관리하게 됨.

 

 

init process 네임스페이스와 docker 네임스페이스는 논리적으로 분리되어 있다.
리눅스 위에서 컨테이너를 다른 네임스페이스를 바라보도록 분리함.

 

 

 


3) 도커 컨테이너 플랫폼 소개 

- 도커 : 애플리케이션을 패키징, 배포, 실행하기 위한 플랫폼. 

- 도커의 3가지 주요 개념

📍 이미지 : 애플리케이션과 해당 환경을 패키지화한 것. 

ㄴ 애플리케이션에서 사용될 수 있는 파일시스템과 이미지가 실행될 때 실행돼야 하는 실행파일 경로와 같은 메타데이터 포한

📍 레지스토리 : 도커 이미지를 저장하고 다른 사람이나 컴퓨터 간에 해당 이미지 공유할 수 있는 저장소 

📍 컨테이너 : 도커 기반 컨테이너 이미지에서 생성된 일반적인 리눅스 컨테이너 

ㄴ 실행 중인 컨테이너는 도커를 실행하는 호스트에서 실행되는 프로세스이지만, 호스트와 호스트에서 실행중인 다른 프로세스와는 격리돼 있음 

ㄴ 리소스 사용이 제한되어 있으므로 할당된 리소스만 액세스하고 사용 가능함 

 

- 이미지 레이어의 이해 

1) 모든 도커 이미지는 다른 이미지 위에 빌드되며 두 개의 다른 이미지는 기본 이미지로 동일한 부모 이미지를 사용할 수 있음. 

2) 동일한 기본 레이어를 기반으로 한 두 개의 이미지에서 생성한 두 개의 컨테이너는 동일한 파일을 읽을 수 있지만 그 중 하나가 해당 파일을 덮어쓰면 다른 컨테이너는 해당 변경 사항을 볼 수 없다. 

ㄴ 컨텐이너 이미지 레이어가 읽기 전용이기 때문임. 

 

도커(이미지) 레이어 구조 (youtube.com)

이미지는 oci image spec 을 준수해서 어떤 컨테이너 사용해도 동일하게 생성 가능

 

read,writer layer(container layer) 은 읽기/쓰기 속성이 제공되고, image layer는 read only 이다.

 

container layer 실습 과정

 

 

Use the OverlayFS storage driver

Learn how to optimize your use of OverlayFS driver.

docs.docker.com

 

 

lowerdir 은 이미지 레이어, upperdir은 컨테이너 이미지가 위치한다고 함. 둘 다 작업을 했을 경우 upperdir가 merged로 된다.

 

 

 

그룹스터디 링크 

리눅스 컨테이너와 쿠버네티스 (tistory.com)

 

리눅스 컨테이너와 쿠버네티스

쿠버네티스 등장 이유모놀리식 애플리케이션에서 마이크로서비스로의 전환하며 구성요소가 쪼개지기 시작배포 가능한 구성 요소의 수와 데이터센터 규모의 증가로 전체 시스템을 원활히 구성

jibsakim.tistory.com

 

반응형