데브옵스(DevOps)를 위한 쿠버네티스 마스터/도커와 쿠버네티스 시작하기

컨테이너, 도커, 쿠버네티스

webmaster 2022. 5. 26. 12:49
728x90

컨테이너

  • 컨테이너는 가상 환경을 사용해 각 마이크로 서비스를 격리(isolate)하는 기술
  • 컨테이너는 가상머신처럼 하드웨어를 전부 구현하지 않기 때문에 매우 빠른 실행 가능
  • 프로세스의 문제가 발생할 경우 컨테이너 전체를 조정해야 하기 때문에 컨테이너에 하나의 프로세스를 실행하도록 하는 것이 좋다. (브라우저와 비슷!)

컨테이너를 격리하는 기술

  • 리눅스 네임 스페이스: 각 프로세스가 파일 시스템 마운트, 네트워크, 유저(uid), 호스트 네임(uts) 등에 대해 시스템에 독립 뷰를 제공

리눅스 네임 스페이스

  • 리눅스 컨트롤 그룹: 프로세스로 소비할 수 있는 리소스 양(CPU, 메모리, I/O, 네트워크 대역대, device 노드 등)을 제한

리눅스 컨트롤 그룹

두 기술을 활용하여 컨테이너 환경을 만들어 줄 수 있다 -> 이를 편하게 제공해 주는 것이 도커이다.

도커

  • 컨테이너 기술을 지원하는 다양한 프로젝트 중에 하나
  • 컨테이너 기술을 이전에도 있었으나 도커로 인해 알려짐
  • 컨테이너 기술의 사실상 표준
  • 2014 가장 인기 있는 클라우드 오픈 소스 2위(리눅스 재단 발표)
  • 다양한 운영체제에서 사용 가능(리눅스, 윈도, MacOS)
  • 애플리케이션에 국한되지 않고 의존성 및 파일 시스템까지 패키 징하여 빌드, 배포, 실행을 단순화 
  • 리눅스의 네임 스페이스와 cgroups와 같은 커널 기능을 사용하여 가상화

도커는 다양한 클라우드 서비스 모델과 같이 사용 가능

  • 컨테이너: 이미지를 격리하여 독립된 공간에서 실행한 가상 환경 
  • 이미지: 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일

도커 아키텍처

도커 아키텍처

  • Docker engine: 이미지, 네트워크, 디스크 등의 관리 역할 
  • Containerd(서비스) : OCI 구현체(주로 runC)를 이용해 container를 관리해주는 daemon
  • 두 프로그램이 각각 돌아가기 때문에 Docker Engine을 재시작해도 각 이미지에 영향이 없음

도커의 한계

도커의 규모가 많아 질수록 관리하기 힘들어 진다.

  • 서비스가 커지면 커질수록 관리해야 하는 컨테이너의 양이 급격히 증가
  • 도커를 사용하여 관리를 한다 하더라도 쉽지 않은 형태

쿠버네티스

  • 2014년 구글이 오픈 소스 공개 
  • 구글이 컨테이너 운영 노하우가 담긴 오픈소스 
  • 고대 그리스어로 항해사라는 의미를 가짐 
  • 다수의 컨테이너를 자동으로 운영하기 위한 오케스트레이션 도구 
  • 많은 시스템을 통합, 컨테이너를 다루기 위한 API 제공 ​
728x90