본문 바로가기

IT 정보

[IT용어정리] 쿠버네티스란? 등장배경, 정의, 장점, 구성요소 쉽게 이해하기

오늘은 클라우드를 이용하며 한 번쯤은 들어봤을 쿠버네티스(k8s)에 대한 등장배경, 정의와 장점 그리고 구성요소에 대해 알아보겠습니다.

 

쿠버네티스 쉽게 이해하기 목차

  1. 쿠버네티스(k8s) 등장배경
  2. 쿠버네티스(k8s) 정의과 장점
  3. 쿠버네티스(k8s)의 구성요소

쿠버네티스(k8s) 등장배경

 

기존 하이퍼바이저를 이용하여 가상화서버에 게스트OS를 올리는 구축 방식의 문제점을 해결한 컨테이너 방식의 등장으로 쿠버네티스 기술이 주목을 받고 있습니다.

가상화 vs 컨테이너
가상화 vs 컨테이너

 

하이퍼바이저를 이용한 가상화방식은 각각의 가상머신(VM)이 운영체제(OS)와 함께 독립된 커널을 가지고 있어서 자원 소비가 매우 비효율적지만 컨테이너 기술로 넘어오면서 더욱 효율적인 서버 구축이 가능해졌습니다.

 

상단의 그림을 보면 알 수 있듯이 컨테이너 기술에서는 OS영역까지 관리하지 않아 더욱 빠른 서비스 구동이 가능합니다. 이러한 장점들로 인해 컨테이너 기술을 활용한 시장을 급속도로 발전하였고 복잡해졌습니다. 개발자들은 이러한 복잡한 컨테이너들을 관리할 수 있는 자동화 도구를 갈망하게 되었고 이때 등장한 것이 쿠버네티스(k8s)입니다.

 

여기서 k8s는 kubernetes의 중간 글자(ubernete)가 8글자라 쉽게 부르기 위해 k8s라는 명칭이 붙게 되었습니다.

 

 

쿠버네티스(k8s) 정의와 장점

 

쿠버네티스는 컨테이너로 만들어진 다양한 애플리케이션을 자동으로 관리하고 배포하기 위한 오픈소스 플랫폼입니다. 컨테이너 기술이 발달함에 따라 필요에 의해 생겨난 기술이라고 볼 수 있는데요. 컨테이너를 활용한 쿠버네티스의 장점은 다음과 같습니다.

 

1. 컴퓨팅 자원의 효율적인 배분

컨테이너 기술이 발달하기 전 사용하던 가상화 방식에서는 각각의 가상머신이 운영체제와 함께 독립된 커널을 가지고 있어서 컴퓨팅 자원의 소비가 비효율적이었습니다. 하지만 컨테이너는 호스트의 커널을 공유함으로써 기존 가상화 방식보다 훨씬 적은 리소스를 사용하게 됩니다. 그로인해 애플리케이션에 필요한 리소스를 줄일 수 있고 이로인해 회사(개인)은 서비스를 운영하는 데 필요한 비용을 많이 아낄 수 있게 되었습니다. (가장 중요한 부분이죠 비.용.)

 

2. 배포의 용이성

컨테이너는 이미지로 패키징 되어있고, 이 이미지는 애플리케이션을 구동하는 데 필요한 모든 의존성과 라이브러리 등을 포함하고 있습니다. 그렇기 때문에 개발환경과 운영환경 사이의 일관성을 유지하면서 빠르게 배포할 수 있습니다.

 

3. 아키텍처의 확장성

컨테이너 기반으로 아키텍처를 구성한다면 리소스를 빠르게 확장할 수 있습니다. 많이들 들어보셨을 스케일링을 통해서인데요. 필요한 만큼 인스턴스를 추가하고 제거하는 것을 빠르게 제어할 수 있어서 애플리케이션의 가용성을 보여줍니다. 특히나 평소에는 부하가 없다가 갑자기 부하가 크게 발생하는 경우 유용하게 사용될 수 있습니다.이 또한 비용을 획기적으로 줄일 수 있는 이점 중 하나입니다.

 

 

쿠버네티스(k8s)의 구성요소

 

쿠버네티스를 이해하기 위해선 그 안에서 사용되는 다양한 구성요소를 이해해야하는데요. 쿠버네티스를 이루고 있는 구성요소는 다음과 같습니다.

 

쿠버네티스 구성요소
쿠버네티스 구성요소 (출처 : 쿠버네티스 공식홈페이지)

 

1. 클러스터 (Cluster)

쿠버네티스를 이루는 요소 중 가장 큰 단위며 시스템에서 관리하는 여러 대의 컴퓨터 노드들의 집합을 뜻합니다. 클러스터는 크게 마스터노드와 워커노드로 구성되어 있습니다.

 

 

2. 마스터노드 (Master Node)

쿠버네티스 클러스터의 제어를 담당합니다. 마스터노드의 구성요소는 아래와 같습니다.

  • API서버 : 클러스터 내의 모든 리소스에 대한 생성, 조회, 수정, 삭제 작업을 수행하는 인터페이스 역할
  • 스케줄러 : 새로운 파드(pod)를 어떤 워커노드에 배치할 지 결정
  • 컨트롤 매니저 : API 서버로부터 받은 요청을 해석하고 실제로 클러스터의 상태를 변경하거나 관리

 

3. 워커노드 (Worker Node)

쿠버네티스 클러스터에서 실제로 컨테이너가 실행되는 노드입니다. 워커노드의 구성요소는 아래와 같습니다.

  • 컨테이너 런타임 : 컨테이너를 실행하고 관리하며 주로 도커를 사용함
  • Kubelet : 마스터 노드와 상호작용하여 노드의 상태를 보고하고 파드(pod)를 생성 및 관리
  • Kube-proxy : 클러스터 내부에서 pod간의 통신을 관리하고 외부에서의 접근을 내부 서비스로 라우팅하여 로드 밸런싱을 제공 

 

4. 파드 (pod)

쿠버네티스에서 배포의 기본 단위이자 하나 이상의 컨테이너를 포함하는 실행 가능한 최소 단위입니다. 이해하기 쉽게 말하자면 하나의 서비스를 이루고 있는 컨테이너의 집합소라고 생각하면 됩니다.

 

 

글을 마치며

 

오늘은 클라우드의 필수 요소 중 하나인 쿠버네티스(k8s)에 대해 쉽고 깔끔하게 알아보았습니다. 이 개념은 정말 기본 개념입니다. 만약 위의 내용을 모두 이해하셨다면 클라우드 기반 서비스 회의를 참석했을 때 내용을 어느정도 알아들을 수 있는(?) 수준이 되었을겁니다. 다음 글에서는 각각 구성요소가 어떤 역할을 하는 지 더욱 자세히 알아보도록 하겠습니다. 글을 보고 궁금한 점이 있다면 아래 댓글을 남겨주세요.

감사합니다!

반응형