안녕하세요, 수염난아이티 입니다.
이번 페이지에서는 쿠버네티스에 대해서 알아보겠습니다.
영어로 Kubernetes 라고 하지만 줄여서 k8s라고 하는데
첫 알파벳 k와 마지막 알파벳 s사이에 총 8개의 알파벳이 있다고해서
주로 k8s라고 줄여서 이야기 합니다.
쿠버네티스를 많이 들어보고 다양한 웹페이지에서 설명글을 봤지만, 쉽게 이해하기 어려워서
제가 간단하게 이해한 내용을 아래와 같이 공유 합니다.
(전문 지식인이 아니라 잘못된 내용이 있을 수 있습니다;;)
1. 쿠버네티스란?
컨테이너화된 애플리케이션들을 자동화, 자동 스케일링 등의 관리를 위한 솔루션 입니다.
그럼 컨테이너는 무엇일까요?
2. 컨테이너란?
"특정 애플리케이션을 실행하기 위해 필요한 라이브러리와 실행환경을 이미지로 패키징하고, 가상화 기술을 이용하여 독립적으로 실행하는 기술을 말합니다." 라고 하면 이해가 어렵습니다.
간단히 말해서 컨테이너란, 컴퓨터 프로그램들을 담을 수 있는 특별한 상자? 라고 생각하시면 됩니다.
그럼 쿠버네티스라는 것은 프로그램들이 담겨져 있는 컨테이너들을 관리하는 놈이라고 생각하시면 쉽습니다.
그럼 컨테이너는 왜 생겼을까요?
쿠버네티스, 컨테이너, 도커 등을 검색하다보면 혹시 아래와 같은 그림을 본 적이 있으실 겁니다.
아래 그림을 설명해보면서 컨테이너가 왜 필요한지 이야기 해 보겠습니다.
3. 컨테이너의 필요성
위의 그림은 컴퓨팅의 발전이라고 보시면 됩니다.
1) Traditional Deployment (전통적 배포방식)
집에 있는 노트북이나 PC를 예시로 들어보겠습니다. 내 PC는 하나의 운영체제 (주로 Windows겠죠?) 를 갖고 있고 이 운영체제 (Operating System, 줄여서 OS) 위에 여러 프로그램을 설치해서 원하는 목적을 수행했습니다.
게임을 하기 위해서 게임 프로그램을 설치하고, 인터넷뱅킹을 위해 각종 프로그램을 설치하고,
코딩을 배우기 위해 코딩 프로그램을 설치하고,,, 등등 그 후 각 프로그램의 업데이트가 공지되면 업데이트를 다운받아 설치하고,,,
이렇게 한 OS위에 여러 프로그램들을 설치해서 오랜기간 PC를 사용하다보면 컴퓨터의 용량이 점점 차오르고 컴퓨터 속도가 느려지는 것을 경험한 적이 있을 겁니다. 이게 Traditional Deployment 라고 보시면 됩니다.
2) Virtualized Deployment (가상화 배포)
위의 문제를 해결하기 위해 Virtualized Deployment 방식이 나왔습니다.
한 OS위에 Hypervisor를 설치하여 여러 가상머신(VM)을 설치할 수 있게 되었습니다.
가상머신의 장점은 여러 OS를 설치하여 여러 프로그램들을 운영할 수 있는 것 입니다.
그러나 가상머신의 단점은 특정 프로그램이 특정 OS가 필요하면 매번 특정 OS를 설치하거나
기존 VM에 구성된 OS를 업데이트 관리해야하는 불편함이 있었습니다.
3) Container Deployment
위의 불편함을 해소하기 위해 나온 것이 Container Deployment 방식 입니다.
위의 Hypervisor가 Container Runtime으로 대체되고
Virtual Machine이 Container로 대체되었습니다. 이로 인해 프로그램 구동을 위해 별도의 OS설치가 필요 없어졌습니다.
기존 Traditional Deployment 와 동일하게 하나의 OS만 있어도 여러 프로그램 구동이 가능해졌습니다.
4. 쿠버네티스의 필요성
세상에 수많은 Container가 생기면서 관리의 어려움이 자연스레 발생하였고, 이 관리를 위해 나온 개념이 바로 쿠버네티스라고 생각해주시면 될 것 같습니다. 사실 도커의 개념이 필연적으로 설명되어야 하지만, 간단히 핵심만 요약하기 위해 이와 같이 이해해주시면 될 것 같습니다.
즉, 쿠버네티스는 수많은 컨테이너들을 관리하는데 자동으로 편리하게 관리할 수 있는 솔루션으로 요약 설명 가능할 것 같습니다.
5. 쿠버네티스의 기능
- 파드(Pod) : 가장 작은 배포 단위로, 하나 이상의 컨테이너를 포함할 수 있습니다.
- 서비스(Service) : 파드 집합에 대한 지속적인 접근 방법을 제공 합니다.
- 볼륨(Volume) : 데이터를 저장하고 파드 간에 공유할 수 있는 방법을 제공합니다.
- 네임스페이스(Namespace) : 클러스터 리소스를 분할하여 사용하는 방법을 제공합니다.
읽어주셔서 감사합니다.
'▶IT World◀ > IT Basic' 카테고리의 다른 글
[it기초] CDN (Content Delivery Network) 란? (2) | 2025.01.08 |
---|---|
[it용어] 메쉬업(Mash-Up)이란? (2) | 2025.01.06 |
로드밸런서 (LB) 란? (4) | 2024.12.31 |
미들웨어(Middleware)란 무엇인가? (7) | 2024.12.27 |
[it용어] 인증/인가 란? (9) | 2024.12.24 |