1. 기초다지기

데일리·2023년 10월 5일
0
post-thumbnail

Intro

개발자로 일하다보면 수도 없이 듣지만 그게 뭐냐고 물어보면 제대로 말하지 못하는 단어가 있다, 바로 쿠버네티스이다. 해당 기록은 인프런의 쿠버네티스에 대하여 강의를 듣고 작성한 블로그이다.

1. Why 쿠버네티스

우선 왜 쿠버네티스를 사용할까? 이는 클라우드 기술의 역사를 돌이켜보면 이해가 쉽다.

  • 1991년 리눅스의 등장
    리눅스의 등장으로 자원을 분할하고 격리하여 사용이 가능해졌는데, 문제는 사용법이 어려워서 크게 주목받지를 못했다.

  • 2010 VM(가상화 머신)
    가상화 기술이 등장하였고 주로 OpenStack을 사용

  • 2014 Container
    여기서 부터 우리가 아는 컨테이너 기술이 나오기 시작하였고 VM보다 가볍고 빠른 특징이 있다

  • 2015 Orchestrator
    MSA로 서비스들의 개수가 많아지면서 다수의 컨테이너를 관리할 수 있는 서비스가 개발되었다.

이렇게 다수의 컨테이너를 쉽게 관리할 수 있는 대표적인 툴이 쿠버네티스라고 보면 이해하기가 쉽다.

다음 사진을 보면 쿠버네티스의 역할을 좀 더 직관적으로 알 수 있다.

As-Is에서는 각 컨테이너 마다 할당된 자원이 있다. 그러나 각 컨테이너마다 시간대 별로 사용하는 자원의 비중이 다른데 컨테이너 관리 기술이 없다면 각 컨테이너의 최대 자원 비용을 생각하여 자원을 마련해주어야 한다.

그런데 쿠버네티스라는 자원 관리툴이 있으면 다르다. 각 컨테이너의 최대 관리 비용을 생각하여 자동으로 필요한 자원의 양에 따라 총량을 조절 해주고 자동으로 사양을 낮춰주고 높여주는(scale-up, scale-down) 등 효율적으로 자원을 관리할 수 있도록 도와준다. (ex. auto-scaling)

2. VM vs Container

그렇다면 vm과 컨테이너의 차이는 무엇일까?


우선 두 기술의 공통점은 둘다 호스트 서버와 호스트 os가 있다는 점이다. 하지만 그안에서 서비스를 구축하면서 차이점이 생긴다.

먼저 VM은 각각의 서비스마다 guest os가 생성되고 이 os들마다 독자적인 os를 지니고 있다, 반면에 컨테이너는 하나의 os에 각각의 서비스가 올라가기 때문에 vm보다 리소스도 적고 가볍다라는 특징을 지니고 있다.

위 사진은 컨테이너 내에서 서비스들이 어떻게 관리되는 지를 볼 수 있는데 하나의 컨테이너는 하나의 이미지를 생성한다, 그런데 만약 이 이미지를 다른 컨테이너에 배포할 때 버전의 문제가 있다면 어떡할까? 컨테이너는 그럴 걱정을 덜어준다, 이미지를 배포할 때 해당 라이브러리의 기능까지 이미지화시키기 때문이다,


해당 사진 처럼 POD(배포 단위)안에 컨테이너가 구성되어 있고 해당 컨테이너는 모듈을 지니고 있다, VM은 하나의 서비스 내에 같은 언어의 모듈을 구성해야하지만 컨테이너는 서비스의 내의 자원들을 분리하여 사용하기 때문에 각 컨테이너 별로 독자적인 언어를 구성해 MSA의 도입이 쉬워지게 한다.

profile
하루에 한편 씩 읽기 좋은 테크 로그

0개의 댓글