Home 배포와 리눅스 컨테이너, 도커, 쿠버네티스에 대해서 알아보자-(01)
Post
Cancel

배포와 리눅스 컨테이너, 도커, 쿠버네티스에 대해서 알아보자-(01)

이전의 배포와 리눅스 컨테이너, 도커와 쿠버네티스에 대해서 알아보는 시간을 가져본다

이전에 서버라 함은 사용자와 통신하는 컴퓨터 주체로 한개의 서버에는 다양한 앱들이 직접 설치되어 실행되었다.

Host Server

primary

위의 그림과 같은 형식으로 여러개의 앱들은 하나의 서버의 환경에 종속 되었고 만약 새로운 운영 채제위에서 구동되어야 하는 서버들이 생기면 새로운 운영채제위에 앱들을 새로 개발하여 증가시켜야 했다.

그렇기 때문에 서버를 증설하기도 까다롭고 새로 운영채제에 맞춰서 새로 개발해야하는 불편함이 있어 하나의 운영 채제 위에 가상화된 환경을 구축하여 서버를 만드는 VM 방식이 생겼다.

VM Server

primary

이전에 나서버에 있던 채팅, 날씨, 웹 앱의 구동환경이 어떠한 이유에서 각각 윈도우7, 리눅스, 윈도우11 에서 구동 되어야 한다고 가정하자.

이전의 방식이라면 각각의 운영체제에 맞춘 새로운 서버를 증설해야 했다. 그러면 낭비되는 자원도 많고 불필요한 개발 시간과 비용이 투자된다.

그래서 하이퍼 바이저를 통한 가상화된 환경을 통한 새로운 방식의 개발이 시작된다.

하이퍼바이저는 가상화 기술을 지원하는 소프트웨어 레이어로, 하드웨어 리소스를 가상 머신(가상 환경)으로 분할하고 관리하는 역할을 한다.

하이퍼바이저는 호스트 시스템(물리적 서버) 위에서 동작하며, 여러 개의 독립적인 가상 머신(게스트 운영체제)을 실행하고 관리한다.

이때 나서버의 윈도우 10 은 호스트 OS 라 칭하며 각각의 VM에 있는 OS(윈도우7, 리눅스 윈도우11)은 게스트 OS라 칭한다.

다만 이 방식도 OS 수준부터 다시 시스템 환경을 준비해야하는 불편함을 가지고 있고 각각의 OS에 자원을 할당하면 다른 환경끼리 공유할 수 없다.

리눅스 컨테이너와 도커

primary

리눅스 컨테이너 기술은 애플리케이션을 격리된 환경에서 실행하고 패키징하는 가상화 기술이다.

이를 통해 애플리케이션의 실행 환경을 표준화하고, 더 효율적인 리소스 관리와 배포를 가능하게 한다.

리눅스 컨테이너는 네임스페이스, 컨트롤 그룹, 파일 시스템 격리 등을 사용하여 프로세스, 리소스, 파일 시스템 등을 격리한다.

이를 통해 여러 개의 애플리케이션을 단일 호스트에서 실행하면서도 서로 영향을 주지 않고 독립적으로 작동할 수 있다.

위의 그림을 보면 각각의 app은 실행 환경과 함께 컨테이너에 담겨 컨테이너 엔진 위에 실행되는데 이때 사용되는 컨테이너 엔진은

도커 엔진 부터 레드햇의 파드맨, 로켓 컴퍼니의 rkt 등이 해당된다.

컨테이너 엔진은 컨테이너의 이미지를 꺼내고, 컨테이너 실행 방법을 명시한 메타데이터를 만든 다음 컨테이너 런타임에 이 정보들을 전달한다.

이때 이미지는 해당 app이 실행되기 위한 각종 모든 환경 정보 등 모든 것들을 레지스트리에 모아 놓고 이미지 파일로 만든 것이다.

쿠퍼네티스

다수의 컨테이너를 적절하게 분산하고 스케줄링하는 컨테이너 오케스트레이션 플랫폼이다.

구글에서는 2014년 모든 서비스를 컨테이너에서 운영한다 말하며 매주 20억개 이상의 컨테이너를 실행시켰다고 한다.

분명 컨테이너를 활용한 배포 방식이 편한것은 사실이나 이처럼 억단위의 컨테이너를 관리해야하 한다면 아주 많은 사람이 컨테이너 관리에 자원을 투입해야한다.

쿠버네티스는 여러대의 서버(노드)들을 클러스터링하여 가중치를 계산하여 적절한 상태값을 명시하면 알아서 서버를 가동시키거나 유지시킨다.

개발자는 애플리케이션의 상태와 구성을 정리하기만 하면 쿠버네티스가 애플리케이션의 관리를 자동화 하여 개발자 및 운영팀의 작업 효율성을 향상 시킨다.

또한 로깅, 모니터링 등의 기능도 제공하여 관리자가 이벤트를 추적하기도 용이하다.

마무리

다음 시간엔 도커에 대한 작동 원리와 기본 개념에 대해 조금더 알아보고 추후에는 쿠버네티스의 사용과 실습 예제를 준비해겠다.

개인적인 이해를 바탕으로 작성한 글 입니다. 피드백 언제든 환영합니다!