1. 쿠버네티스란 무엇인가?
쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션의 배포, 확장, 관리 과정을 자동화하는 컨테이너 오케스트레이션 플랫폼이다. 2014년 구글에서 오픈소스로 공개하면서 시작됐고, 현재 CNCF(Cloud Native Computing Foundation)에서 관리하고 있다. 클라우드, 온프레미스, 하이브리드 환경에 관계없이 어디서든 일관된 애플리케이션 운영을 가능하게 한다.
주요 기능으로는 자동화된 스케일링, 자가 치유(Self-Healing), 부하 분산 등이 있으며, 이러한 기능 덕분에 운영의 효율성을 크게 높일 수 있다.
2. 컨테이너화 된 어플리케이션이란?
전통적인 배포 방식의 한계와 가상화의 등장
초창기에는 애플리케이션을 물리 서버에 직접 배포했다. 그러나 각 애플리케이션마다 서버가 필요해지면서 자원 낭비가 심해졌고, 이를 개선하기 위해 가상화(Virtualization) 기술이 등장했다. VMWare나 VirtualBox 같은 하이퍼바이저를 통해 가상 머신(Virtual Machine)을 생성해 여러 운영체제에서 애플리케이션을 구동할 수 있게 됐다. 하지만, 가상 머신 환경에서는 OS와 각종 에이전트(DB server, Web server, Web application server 등...)가 상당한 리소스를 차지했다.
컨테이너의 등장과 현대적인 배포 방식
컨테이너는 애플리케이션 코드와 함께 필요한 라이브러리, 종속성을 하나의 독립된 패키지로 묶어준다. 가상 머신과 달리 별도의 운영체제 전체를 포함하지 않아 가볍고, 빠르다. 특히 Docker 같은 컨테이너 런타임의 등장으로 다양한 환경에 신속하게 배포 가능해지면서 컨테이너 기반 배포가 널리 보급되었다.
이러한 컨테이너의 장점 덕분에 애플리케이션을 어디서나 쉽게 구동할 수 있으며, 운영 환경의 변화에도 유연하게 대응할 수 있다.
3. 왜 쿠버네티스인가?
수동 배포의 한계와 컨테이너 오케스트레이션의 필요성
현대 운영 환경에서 애플리케이션 트래픽은 시시각각 변동한다. 트래픽 증가에 따라 컨테이너를 자동으로 확장(스케일링)하고, 서비스가 중단되지 않도록 자동으로 장애를 복구하는 작업이 필요하다. 이를 컨테이너 오케스트레이션이라 하는데, 쿠버네티스는 이 오케스트레이션을 지원하는 대표적인 플랫폼이다.
쿠버네티스의 핵심 기능
- 자동화된 스케일링: 트래픽 변화에 맞춰 컨테이너 수를 자동으로 조정해준다.
- 자가 치유(Self-Healing): 문제가 발생한 컨테이너를 감지하고 자동으로 복구하여 애플리케이션 가용성을 보장한다.
- 부하 분산(Load Balancing): 컨테이너들 사이에 트래픽을 고르게 분산해 서비스 성능을 유지한다.
- 롤링 업데이트(Rolling Update): 애플리케이션 업데이트 시 서비스를 중단하지 않고 점진적으로 새로운 버전을 배포한다.
- 클러스터 관리: 클러스터 내의 모든 리소스를 중앙에서 관리하여 배포와 모니터링을 효율화한다.
쿠버네티스와 다른 오케스트레이션 도구 비교
쿠버네티스 외에도 Docker Swarm, GKE, EKS, ECS와 같은 여러 오케스트레이션 도구가 있다. 쿠버네티스는 확장성, 유연성, 복구 능력에서 탁월한 성능을 제공하기 때문에 현재 가장 널리 쓰이는 도구로 자리잡았다.
4. 쿠버네티스의 주요 개념
쿠버네티스의 구조는 다양한 컴포넌트들로 구성되어 있는데, 몇 가지 주요 개념을 알아보자.
- Pod: 쿠버네티스에서 배포 가능한 최소 단위로, 하나 이상의 컨테이너를 포함한다.
- Node: 애플리케이션이 구동되는 물리 서버나 가상 머신으로, 마스터 노드와 워커 노드로 나뉜다.
- Cluster: 여러 개의 노드가 모여 하나의 큰 컴퓨팅 리소스 풀을 형성하는 집합이다.(다수의 Control plane node과 Worker node로 구성)
- Service: 각 Pod에 접근할 수 있도록 고정된 IP와 DNS를 제공해주는 쿠버네티스 리소스.
- Namespace: 리소스를 논리적으로 분리하여 여러 팀이 동일한 클러스터에서 작업할 수 있도록 지원하는 가상 공간.
'데브옵스 > Orchestration' 카테고리의 다른 글
[Kubernetes] 4. 서비스 배포 환경 구성 - HELM, Ingress NGINX, metalLB 설치 (1) | 2024.10.31 |
---|---|
[Kubernetes] 3. 도커 및 쿠버네티스 설치, 클러스터 구성 (0) | 2024.10.31 |
[Kubernetes] 2. 클러스터 구성 환경 준비 (0) | 2024.10.31 |
[Docker] 2. Docker 컨테이너 (0) | 2024.06.05 |
[Docker] 1. Docker 개요 (0) | 2024.06.04 |