Kubernetes 란??
쿠버네티스가 무엇이고, IT에서 많은 관심을 가지는지 알아보겠습니다.
쿠버네티스란?
컨테이너화 된 워크로드와 서비스를 관리할 수 있고, 이식성과 확장성을 갖춘 오픈소스 플랫폼입니다. 선언적 구성으로서 명령이 아니라, 어떠한 것의 사실(fact)들의 집합으로 구성된 것을 의미합니다. 또한 자동화의 용이성을 갖추고 있습니다. 그렇다면 쿠버네티스가 왜 사용되기 시작했는지 알아보겠습니다.
전통적인 배포 (Tranditional Deployment)
한 물리서버(hardware)에서 여러 애플리케이션을 실행합니다. 이때 애플리케이션의 리소스의 한계를 정의할 수 없어 애플리케이션 간의 성능 저하등 간섭을 발생시킬 수 있습니다.
예로 살펴보겠습니다. 2개의 애플리케이션이 있을 때 하나는 메일을 전송하는 애플리케이션이고, 하나는 실시간 결제를 담당하는 애플리케이션입니다. 실시간 결제 애플리케이션은 빠른 처리를 요구합니다. 하지만 메일을 전송하는 애플리케이션에서 많은 과부하가 걸린다면, 많은 리소스를 사용할 것입니다. 그 결과로 실시간 결제 애플리케이션의 응답이 느려지는 결과를 초래할 수도 있습니다. 그렇다면, 하나의 물리서버가 아닌 여러 개의 물리 서버로 애플리케이션을 사용한다면, 어떨까요??
이 역시도 문제가 존재합니다. 서버가 확장성을 갖추기 어렵습니다. 특정 날에만 많은 트래픽이 발생하는 애플리케이션일 경우 사양이 좋은 물리 서버를 할당하면, 그날을 제외할 때는 리소스가 낭비되고 있습니다. 따라서 이러한 애플리케이션 간의 격리, 리소스를 효율적으로 사용하기 위해서 VM이 등장했습니다.
가상화 배포(Virtualized Deployment)
전통적인 배포와 다르게, 단일 물리서버에서 여러 가상 시스템(VM)을 실행할 수 있게 해줍니다.
가상 머신이란?
물리적 하드웨어 시스템(오프프레미스 또는 온프레미스에 위치)에 구축되어 자체 CPU, 메모리, 네트워크 인터페이스 및 스토리지를 갖추고 가상 컴퓨터 시스템으로 작동하는 가상 환경입니다.
가상 머신을 사용함으로써 애플리케이션을 격리하므로써, 리소스를 효율적으로 사용할 수 있습니다. 각 VM은 자체 운영체제를 포함한 모든 구성 요소를 실행하는 완전한 머신이라고 볼 수 있습니다.
가상 머신의 한계는 각 VM마다 각자의 OS를 띄워야 하기 때문에 많은 용량이 필요해 무겁고, 부팅 시에 많은 시간이 소요됩니다.
한계점을 극복 하기 위해 컨테이너가 등장했습니다.
컨테이너 배포(Container Deployment)
컨테이너란?
소프트웨어 서비스를 실행하는 데 필요한 특정 버전의 프로그래밍 언어 런타임 및 라이브러리와 같은 종속 항목과 애플리케이션 코드를 함께 포함하는 경량 패키지입니다. 따라서 빠르게 애플리케이션을 생성하고, 배포가 가능합니다.
컨테이너는 운영체제를 공유하기 때문에 VM 보다 가볍지만, VM의 이점인 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간을 가질 수 있어 애플리케이션 간의 격리가 가능합니다.
이제 배포는 컨테이너의 시대로 발전했습니다. 그렇기 때문에 쿠버네티스가 빛을 바랄 시대입니다. 쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 제공합니다. 쿠버네티스로 얻을 수 있는 이점을 살펴보겠습니다.
쿠버네티스를 사용하는 이유
1. Storage Orchestration
로컬 저장소, 공용 클라우드 공급자와 같이 원하는 저장소 시스템을 자동으로 탑재할 수 있습니다.
2. Service Discovery, Load Balancing
DNS 이름을 사용하거나, 자체 IP 주소를 사용해서 컨테이너를 노출할 수 있습니다. 또한 컨테이너에 대한 트래픽이 많으면 네트워크 트래픽을 로드 밸런싱하여, 안전한 워크로드를 갖출 수 있습니다.
3. self-healing
가동을 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체할 수 있습니다. 또한 사용자가 정의한 Health Check를 이용해 컨테이너를 죽이고 새로운 컨테이너를 시작할 수 있습니다.
이 밖에도 많은 이점이 있습니다.
지금까지 쿠버네티스가 무엇이고, 왜 사용하는지 알아봤습니다. 다음은 쿠버네티스의 구성 요소를 알아보겠습니다.
'DevOps > Kubernetes' 카테고리의 다른 글
Kubernetes ReplicaSet, Deployment (0) | 2023.01.17 |
---|---|
Kubernetes Pod (0) | 2023.01.08 |
Kubernetes 구성 요소 (0) | 2023.01.07 |
Mac m1, m2 minikube 설치 (0) | 2023.01.04 |
댓글
이 글 공유하기
다른 글
-
Kubernetes ReplicaSet, Deployment
Kubernetes ReplicaSet, Deployment
2023.01.17 -
Kubernetes Pod
Kubernetes Pod
2023.01.08 -
Kubernetes 구성 요소
Kubernetes 구성 요소
2023.01.07 -
Mac m1, m2 minikube 설치
Mac m1, m2 minikube 설치
2023.01.04