IT's 우

컨테이너 뽀개기 본문

CS

컨테이너 뽀개기

디우 2023. 2. 7. 01:12
728x90

참고자료:

서비스 개발자를 위한 컨테이너 뽀개기 (a.k.a 컨테이너 인터널)

 

서비스 개발자를 위한 컨테이너 뽀개기 (a.k.a 컨테이너 인터널)

시작하며 안녕하세요. 카카오엔터프라이즈에서 검색 서비스를 개발하고 있는 검색클라우드기술셀의 Sam(김삼영)입니다. 저는 앞으로 ‘컨테이너 인터널’이라는 주제로 글을 연재할 예정입니

tech.kakaoenterprise.com


클라우드(Cloud)

공유 구성이 가능한 컴퓨팅 리소스(네트워크, 서버, 스토리지, 애플리케이션)의 통합으로 어디서나 간편하게, 요청에 따라 네트워크를 통해 언제든 접근하는 것을 가능하게 하는 모델


가상화

“a hardware environment that is not real”, 실제가 아닌 하드웨어 환경

호스트(Host) 가상화 소프트웨어(이하 하이퍼바이저)를 구동하는 물리 시스템
게스트(Guest) 하이퍼바이저(Hypervisor) 위에 설치되는 가상머신(Virtual Machine)

 

하이퍼바이저(소프트웨어) 가상화

하이퍼바이저

  • 한 대의 머신에서 다수의 운영체제를 동시에 실행하는 소프트웨어로, 하드웨어를 가상화
  • = 가상머신 모니터(VMM, Virtual Machine Monitor)

 

컨테이너( 애플리케이션) 가상화

컨테이너

  • 애플리케이션 구동에 필요한 모든 것들을 패키징하고 격리된 환경에서 실행
  • “컨테이너” 기반의 가상화로 애플리케이션 실행환경을 가상화함.
  • 특징: “패키징”, “격리된 실행”→ 서버별 환경에 영향받지 않고 사람의 개입 없이 자동으로 배포할 수 있음.

 

네트워크 가상화

  • 네트워크의 한정된 물리주소라는 제약을 해결하고, 물리 IP 사용으로 인한 여러 의존성 구성을 가상 네트워크를 통해 추상화하여 단순하고 유연하게 할 수 있음.

 

 


API(Application Programming Interface)

가상화를 통해 가능해진 **하드웨어와 애플리케이션 제공을 “추상화(인터페이스)”**하는 레이어

  • 추상화를 하는 목적: 인터페이스(Interface)를 정의함으로써 리소스의 요청 및 제어 방법을 표준화하고, 이를 기준으로 리소스 딜리버리를 위한 인프라 체계를 정의하기 위함.

컨테이너(Container)

격리된 환경과 제한된 리소스로 제어되는 프로세스

  • 애플리케이션이 다른 프로세스의 영향을 받지 않게 격리하고 주어진 리소스 안에서 실행될 수 있게 해 줌.
  • 격리된 환경은 배포에도 장점이 됨.
  • 컨테이너에서는 실행파일뿐만 아니라 의존성 라이브러리, 설정 등 실행에 필요한 모든 것들을 **“이미지”**라고 하는 것에 모아 패키징함으로써 이 “이미지”에 있는 살림살이만으로도 서버 환경에 의존하지 않고 실행되는 것을 보장

VM(Virtual Machine) vs 컨테이너

→ 격리된 환경을 제공하는 방법은 컨테이너만 있는 게 아님.

  • VMware나 Parallels 등의 프로그램을 이용하면 윈도우즈(Windows)나 Mac에서 다른 운영체제(이하, OS)를 설치하여 사용이 가능한데 이것이 바로 VM.
  • VM은 컨테이너보다 훨씬 강력한 격리를 제공함. “하이퍼바이저”라는 소프트웨어가 하드웨어 리소스를 가상화하고, 그 위에 별도의 운영체제가 설치됨.
    • 운영체제→ 서버의 “호스트 OS”와 구분해서 “게스트 OS”(이하, GuestOS)라고 부름
  • 하이퍼바이저는 서버 위에 여러 종류의 GuestOS를 VM으로 실행 가능
VM Container
서버 안에 또 다른 서버가 있는 것처럼 별도의 OS 환경으로 동작 (GusetOS 없이) 호스트 OS를 사용하고 프로세스를 격리하여 실행하는 방식
다양한 종류의 OS를 설치하고 구동 가능. 리눅스 커널에서 지원하는 기능들로 만들어지기에 윈도우, 맥 등 다른 OS에서는 동작하지 않음.
  Mac이나 윈도우에서 컨테이너 사용이 가능한 이유: 윈도우나 Mac에서 컨테이너 지원을 위해 리눅스 VM을 올리고 그 위에서 컨테이너를 기동하기 때문
GuestOS가 하드웨어 사용 시 하이퍼바이저의 처리를 기다려야 함. 하이퍼바이저는 여러 GuestOS를 상대해야 하고, 하드웨어는 한정된 자원이다 보니 개별 GuestOS의 사정에 맞춰서 리소스를 제공하기 쉽지 않다. VM에 비해 작고 빠름. 컨테이너는 호스트 커널에서 바로 처리되고 하드웨어를 직접 관리.
   
하드웨어를 가상화하고 그 위에 다양한 GuestOS를 올리는 “컴퓨팅” 자판기가 가능 애플리케이션을 패키징하고 서버 환경에 제약 없이 구동할 수 있기 때문에 일종의 “앱”자판기가 가능

 

쿠버네티스

도커와 같은 컨테이너 런타임을 통해 컨테이너를 ‘오케스트레이션’하는 플랫폼

 📌 ‘오케스트레이션’- 시스템과 애플리케이션, 서비스의 자동화된 설정, 관리, 조정을 의미합니다. 오케스트레이션은 IT 팀이 복잡한 태스크와 워크플로우를 보다 쉽게 관리할 수 있도록 돕습니다.

 

  • 컨테이너에 필요한 설정과 관리, 적절한 노드로 배치, 모니터링 등을 제공하는 것을 의미
  • 물리머신에서 사람이 해왔던 업무 대배분을 해결하는데 사람이 거의 개입하지 않고도 배포부터 운영관리의 다양한 부분을 자동화할 수 있음.
  • 사용자의 명세를 기반으로 컨테이너의 스펙에 적합한 노드를 자동으로 선정
    • 전 세계 서버들을 컨테이너의 스펙과 비교하여 필터링하고 추려진 노드들을 스코어링(Scoring)하여 가장 최적인 노드로 컨테이너를 배치
  • 쿠버네티스가 노드 선정과 배포를 더 간단하게 할 수 있었던 것은 컨테이너가 실행환경을 포함하고 있고 서버에 따라 영향을 받지 않기 때문
  • 명세(일종의 작업지시서)를 기반으로 다양한 “컨트롤러”가 협력하는 방식으로 동작하는데, 여려 종류의 빌트인 컨트롤러들이 있고 필요하면 커스텀 컨트롤러를 구현할 수 있음.
728x90
반응형