Developers Haven

(DH)블로그는 개발자들이 기술 정보를 찾아볼 수 있는 안식처가 되고 싶음을 희망하여 시작하게 되었습니다. 공부한 내용과 성장 과정을 기록해두었으니 편히 둘러보시길 바랍니다.

Welcome to DH's Blog

[기술공부]/Kubernetes

[k8s] 컨테이너 등장 배경 with 가상화 배포 환경

DH’s Blog 2024. 4. 13. 14:56
반응형

 

요즘 많은 기업에서 클라우드에 관심을 가지고 있고,

현재 재직중인 회사에서도 클라우드 빅데이터 플랫폼을 출시하면서 쿠버네티스 환경을 많이 사용하고 있다.

이번 기회를 통해, 쿠버네티스가 무엇이며 어떠한 구성 원리로 이루어지는지 배워보려 한다.

 

 

새로운 기술을 처음 배울 때는, 그 기술이 왜 등장했는지를 먼저 알게되면 이후의 내용을 이해하는데 도움이 된다.

그래서 이번 시간에는 본격적인 쿠버네티스에 대한 내용에 들어가기 앞서,

가상화 환경이 무엇이고? 컨테이너 환경이 도입된 이유에 대해서 알아보도록 하자.

 

 


 

과거에는 한 컴퓨터에 하나의 OS를 설치하고 그 위에 여러 프로그램을 실행하는 방식으로, 한 두개의 프로그램 때문에 전체 컴퓨터의 성능이 떨어지는 문제가 있었다. (어릴적 컴퓨터에 게임을 몇 개 설치했다가 컴퓨터 성능이 저하되어 잔소리를 들은 경험이 있지 않은가? ) 이러한 문제를 해결하기 위해 한 컴퓨터에 가상 컴퓨터를 여러 개 구동되는 것처럼 구현하기 위해 가상화 배포(Virtualized Deployment) 방식이 등장하게 되었다.

 

 

[가상화의 종류]

 

1. Host OS 가상화

 

  • 물리머신(H/W) 위에 OS를 설치하고, 그 위에 가상화 S/W(ex. VirtualBox)와 가상머신을 움직이는 방식
  • 우리는 H/W 위에서 직접 동작하는 OS를 '호스트 OS(Host OS)'라고 부르고, 가상머신 위에 설치된 OS를 '게스트 OS(Guest OS)'라고 부른다.
  • ex) 본인 PC에 VM S/W를 설치하고 그 위에 게스트 OS를 설치하는 방식 → PC 리소스를 공유하는 방식

 

 

2. Hypervisor 가상화

  • 호스트 OS 없이 H/W 위에 Hypervisor S/W를 설치하여 사용하는 가상화 방식 → Hypervisor는 H/W와 가상 머신 간의 중재자 역할을 하며, Hypervisor가 직접 H/W를 관리하기 때문에 호스트 OS가 필요하지 않다
  • 호스트 OS가 없어서 가상 머신은 독립된 호스트 시스템처럼 행동할 수 있고 오버헤드가 적다.
  • ex) H/W 위에 Hypervisor S/W를 설치하고 그 위에 게스트 OS를 설치하는 방식 → 오버헤드가 적은 방식

 

 

 

 


[가상화 배포에서 컨테이너 배포로 바뀌게 된 이유]

(참고)
컨테이너 - S/W App 실행에 필요한 환경을 독립적으로 운용가능한 기술
Hypervisor - 단일 시스템 위에 가상 컴퓨터(VM)을 여러 개 구동할 수 있도록 만들어주는 계층

 

가상화 배포는 단일 물리 서버(H/W)에서 여러 가상머신(VM)을 실행할 수 있었지만, 가상머신마다 OS(게스트 OS) 설치가 필요하여 리소스를 너무 많이 사용하게 되면서 무거워졌다. 그래서 컨테이너를 도입하며 호스트 OS와 커널을 공유하면서 이전보다 가벼운 가상화 구현이 가능해지게 되었다.

 

 

 

 

 


[컨테이너 배포]

1. 컨테이너와 이미지의 관계

(1) Image

  • 컨테이너 실행에 필요한 파일과 실행할 애플리케이션 설정을 포함한 file 패키지
  • ex. 웹 서버를 실행하기 위한 file, 환경설정 등

 

(2) Container

  • 이미지를 기반으로 생성된 인스턴스(가상 환경)
  • 이미지 내의 파일과 애플리케이션을 통해 구체화된 상태

 

2. 컨테이너 배포(Container Deployment)의 구성

  • App: 실행하려는 프로그램
  • Bin(바이너리)/Library: 프로그램이 실행하는데 필요한 환경과 관련된 file
  • Container: App이 구동되는 환경까지 감싸서 실행할 수 있는 격리 기술
  • Container Runtime: 컨테이너를 내려받거나 구동할 수 있도록 도와주는 컨테이너 실행 엔진(ex. Docker)

 

 

 


 

 

결국, 컨테이너는 게스트 OS 없이 가벼운 가상화 구현을 가능하게 해주었고 이러한 컨테이너를 생성하고 관리하기 위한 기술들이 등장하게 되는데 이것이 흔히 아는 도커(Docker), 쿠버네티스(Kubernetes)이다. 그럼 다음 시간에는 본격적으로 쿠버네티스가 등장한 배경과 개념에 대해서 배워보도록 하자.

 

 

 

 

 

(참고 페이지)
https://www.samsungsds.com/kr/insights/220222_kubernetes1.html

 

반응형