ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker와 Kubernetes
    개발 2022. 10. 21. 17:02

    본 내용은 개인학습용으로 외부 자료를 토대로 작성된 내용입니다.

     

     

     

    용어 알아보기

     

    용어
    컨테이너 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술
    컨테이너 런타임 컨테이너를 다루는 도구
    도커 컨테이너를 다루는 도구 중 가장 유명한 것
    쿠버네티스 컨테이너 런타임을 통해 컨테이너를 오케스트레이션 하는 도구
    오케스트레이션 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위

     

     

    컨테이너

    구동하려는 애플리케이션을 실행할 수 있는 환경까지 감싸서, 어디서든 쉽게 실행 할 수 있도록 해 주는 기술

    작업 환경에 필요한 옵션을 일일히 세팅하지 않고 컨테이너에 준비해 사용자가 독립적으로 프로그램을 실행 할 수 있도록 도와준다.

     

     

    컨테이너 런타임

     

    컨테이너를 사용할 때 필요한 도구가 컨테이너 런타임이다. 컨테이너를 쉽게 내려받거나 공유하고 구동할 수 있도록 해주는 도구인데

    가장 유명한 도구가 Docker 이다.

    도커가 사용하는 컨테이너 규격은 표준화되어 있기 때문에 도커가 아닌 다른 컨테이너 런타임들도 도커로 만든 컨테이너를 사용할 수 있다.

     

     

    쿠버네티스

    더보기

    "쿠버네티스는 컴퓨터들을 연결하여 단일 형상으로 동작하도록 컴퓨팅 클러스터를 구성하고 높은 가용성을 제공하도록 조율한다."

    - 쿠버네티스 공식문서 발췌

     

    쿠버네티스는 컨테이너 런타임을 통해 컨테이너를 다루는 도구를 말한다.

    쿠버네티스가 하는 일은 서버에 컨테이너를 분산해서 배치하거나, 문제가 생긴 컨테이너를 교체하거나, 컨테이너가 사용할 비밀번호나 환경 설정을 관리하고 주입하는 일을 하며, 이것을 컨테이너 오케스트레이션이라 한다.

     

     

    그림으로 살펴보기

     

     

    도커 컨테이너를 사용했을 때의 장점은?

     

    가상머신을 사용한 배포 방식을 사용하는 것이 이것에 대한 비교로 볼 수 있다.

    가상머신은 말 그대로 가상 컴퓨터를 사용한다는 것인데, 하나의 컴퓨터에 각각의 가상머신을 실행해

    가상머신간의 간섭을 단절시키고 가상머신 마다의 성능을 조절해 다중화와 분산처리가 가능한데

    이러한 방식은 효율적이긴 하지만 가상머신 마다 운영체제를 설치해야하기 때문에 컨테이너 중심 배포보다 무겁다.

     

    이와 달리 컨테이너는 가상머신처럼 운영체제를 매번 설치할 필요가 없이 하나의 운영체제만 사용한다.

    하나의 운영체제로 사용한다는 점에서 어떻게 각각의 앱이 간섭하지 않을 수 있을까 의문점이 생길수 있다.

    컨테이너 기반 배포에서는 OS 커널을 공유하는 가상화 방식을 사용해 컨테이너 입장에서 서로 다른 컴퓨터에서 구동중이다.

    라고 인식되게하여 OS가 분리된것 처럼 사용할수 있게 한다.

     

    그런데 다시 생각해보면 하나의 운영체제로 사용된다는 점은 어떠한 문제로 인해 OS에 문제를 일으키는 경우 OS에서 구동중인 전체 컨테이너에 문제를 일으킬 수 있다는 점이다.

     

      전통적 배포 가상머신 기반 배포 컨테이너 기반 배포
    컴퓨터 물리적인 컴퓨터 1대 물리적인 컴퓨터 1대
    다수의 가상머신
    컴퓨터 형태에 영향 받지 않음
    OS 물리적인 컴퓨터 1대
    OS 1개 설치
    물리적인 컴퓨터 1대 + OS
    다수의 가상머신 + 각각의 OS
    컴퓨터 형태와 관련 없이 설치된 OS 1개
    리소스 컴퓨터 1대의 자원을
    여러 프로그램이 나눠 씀
    하이퍼바이저를 통해
    가상머신 별 개별적 자원 할당
    OS에서 프로그램별로 자원을 할당하고 관리함
    격리 수준 격리되지 않아
    프로그램 간 간섭 발생
    각 가상머신이 완전하게 격리됨 프로그램 실행 환경은 격리되지만
    OS 환경은 공유됨
    문제 전이 가능성 특정 프로그램의 문제가 시스템 전체의 중단을 가져올 수 있음 특정 가상머신의 문제가 다른 가상머신의 문제로 전이될 가능성이 낮음 프로그램 간 간섭은 없지만
    특정 프로그램의 문제로 OS 문제를 유발 할 경우 시스템 중단의
    가능성 있음

     

     


    쿠버네티스 구성을 위한 '미니쿠브(Minikube)'

     

    미니쿠브는 리눅스, 맥 OS, 윈도우를 지원하며 설치 파일 이외에도 각 OS가 지원하는 패키지 매니저를 활용하여 편리하게 설치할수 있게 도와준다. 설치가 매우 간단하며 쿠버네티스가 제공하는 대부분의 기능을 활용할 수 있다는 장점과 인텔리제이와 같은 개발도구들과 미니쿠브를 연계하여 내 컴퓨터에서 개발한 프로젝트가 쿠버네티스상에서 동작하는 결과를 바로 확인 할 수 있다는 장점이 있다.

     

    반면, 로컬에 설치되며 단일 노드 형태로 동작하기 때문에 다중 노드를 구성하여 수행해야 하기에는 곤란하다고 한다.

    또한 노드를 가상화된 형태로 생성하기 때문에 도커, 버추얼박스 등의 가상화 도구가 추가로 필요하다.

     

    미니쿠브
    장점 단점
    간단한 설치
    쿠버네티스 대부분의 기능 제공
    IDE와 연계로 개발 동작 결과 확인
    로컬 설치
    단일노드 형태
    도커, 버추얼박스 등 가상화 도구 추가 도입

     

     


    직접 다뤄보기

     

    Docker 설치

     

    brew에 cask가 없을 경우

     brew install cask

     

    brew cask로 설치할 경우

    - brew cask 는 Docker Desktop on Mac 도커를 설치해주며, docker-compose, docker-machine을 같이 설치해줍니다.

    - 맥 OS에서 띄우기 때문에 가상 머신에서 포트 포워딩을 할 필요가 없습니다.

    brew install --cask docker

     

    minikube 설치

    brew install minikube

     

    클러스터 시작하기

    minikube start

    minikube start 를 통해 수행하는 작업

    • docker image download
    • docker image로 minikube container를 실행하여 kubernetes cluster 생성
    • kubernetes cluster와 kubectl의 연결을 위한 정보가 담긴 config 파일 설정

     

     

     

     

     

    참고자료

    https://www.samsungsds.com/kr/insights/220222_kubernetes1.html

     

    쿠버네티스 알아보기 1편: 쿠버네티스와 컨테이너, 도커에 대한 기본 개념

    요즘 IT 생태계에 관심이 많으신 분들이라면 쿠버네티스라는 단어를 들어 보셨을 텐데요. 쿠버네티스에 대해 개발자들의 관심이 높아지고 있고, 여러 대기업에서 새로운 시스템을 쿠버네티스를

    www.samsungsds.com

    https://www.samsungsds.com/kr/insights/kubernetes-2.html

     

    쿠버네티스 알아보기 2편: 쿠버네티스를 만나는 여러 가지 방법

    지난 글에서 쿠버네티스가 무엇인지, 쿠버네 티스를 접할 때 자주 나오는 개념과 쿠버네티스의 관계는 어떤 것인지 알아보았습니다. 이번 글에서는 쿠버네티스를 구성할 때 사용 가능한 도구는

    www.samsungsds.com

     

    댓글

onul-hoi front-end developer limchansoo