클라우드

[쿠버네티스] (1/3) Cloud Native와 Kubernetes란?

제익 2025. 10. 14. 18:01
반응형

 
 
이번 글에서는 클라우드 환경에서 서비스를 더 효율적으로 만들고 운영하기 위한 핵심 기술, 클라우드 네이티브와 쿠버네티스에 대해 알아보도록 하겠다.


 

1. 클라우드 네이티브(Cloud Native)란?

클라우드 네이티브(Cloud Native)란 한 마디로 클라우드 환경에 최적화된 애플리케이션 개발 및 배포 방식이다. 클라우드 환경을 최대한 활용할 수 있도록 설계된 소프트웨어 개발 및 운영 방식으로, 물리적인 인프라가 아닌 클라우드 환경의 장점을 최대한 활용해서 더 빠르고 유연하게 서비스를 만들고 운영하기 위한 철학이라고 볼 수 있다.

- 클라우드 네이티브의 장점

  • 효율성 증가: 자동화된 도구와 클라우드 서비스를 활용하여 애플리케이션을 신속 구축 가능
  • 비용 절감: 고비용의 물리적 인프라 운영 방식이 아닌, 사용한 만큼만 지불하는 온디맨드(On-Demand) 클라우드 비용 방식을 사용
  • 가용성 보장: 클라우드 환경의 복원력과 가용성을 바탕으로 서비스 중단 없이 안정적인 애플리케이션 구축 가능

- CNCF(Cloud Native Computing Foundation) 

  • 클라우드 네이티브 기술의 발전과 표준화를 이끄는 오픈소스 재단.
  • CNCF는 다양한 클라우드 네이티브 오픈소스 프로젝트를 관리하고 인증한다. 
  • 사이트 정보 : https://www.cncf.io/

2. 클라우드 네이티브를 구성하는 핵심 기술

1) CI (Continuous Integration) / CD (Continuous Delivery/Deployment): 빠르고 자동화된 개발, 배포

CI/CD는 애플리케이션 개발 단계부터 배포까지 모든 과정을 자동화하여, 사용자에게 더 효율적이고 빠르게 서비스를 제공하는 개념이다.

  • CI (지속적인 통합): 개발자들이 작업한 코드를 자주 통합하고 테스트하는 과정
  • CD (지속적인 전달/배포): 통합된 코드를 실제 운영 환경까지 자동 또는 수동으로 릴리즈하는 과정

2) DevOps: 개발과 운영의 협업 문화

DevOps는 Development(개발)와 Operations(운영)의 합성어로, 개발팀과 운영팀이 긴밀하게 협력하고, 자동화 도구를 사용해 소프트웨어를 더 빠르고 안정적으로 개발/배포/운영하기 위한 조직 문화와 방식을 의미한다.

3) MicroServices Archetecture (MSA): 작게 쪼개서 유연하게

MSA(Microservice Architecture)는 하나의 거대한 애플리케이션을 여러 개의 작고 독립적인 서비스로 나누어 개발, 배포, 운영하는 아키텍처 스타일을 의미한다. 각 서비스는 특정 기능만 담당하고, 서로 API를 통해 통신하기 때문에 독립적으로 배포 및 확장할 수 있어 유연성이 높다. 
* 반대 개념은 모놀리식(Monolithic)

4) Containers: 어디서든 동일하게 실행되는 환경

컨테이너는 애플리케이션과 그 실행 환경(라이브러리, 설정 등)을 하나로 묶어, 어떤 환경(개발, 테스트, 운영)에서도 동일하게 실행되도록 보장하는 경량 가상화 기술이다.

  • 컨테이너 엔진 도구: Docker
  • 컨테이너 오케스트레이션 도구: Kubernetes

3. 쿠버네티스(Kubernetes) 아키텍처

수많은 컨테이너를 효율적으로 관리하기 위해 등장한 것이 바로 쿠버네티스(Kubernetes)다. 컨테이너화된 애플리케이션을 자동으로 배포, 관리, 확장, 복구해주는 오픈소스 오케스트레이션 플랫폼이다.

📌 쿠버네티스의 기본 구성

1) Cluster

 
클러스터란 컨테이너화된 애플리케이션을 실행하는 컴퓨팅 노드 또는 작업자 머신 그룹으로 크게 Control Plane Worker Node 두 영역의 집합으로 구성된다.

2) Control Plane (제어 영역)

클러스터 전반을 관리하고, 사용자가 원하는 상태를 유지하도록 조정하는 두뇌 역할의 노드

  • API Server: 모든 명령과 요청을 받는 클러스터의 유일한 진입점
  • etcd: 쿠버네티스의 모든 상태와 설정을 저장하는 분산 Key-Value 저장소
  • Scheduler: 새로 생성될 Pod(컨테이너를 포함하는 최소 단위)를 어느 Node에 배치할지 결정
  • Controller Manager: 쿠버네티스 리소스의 상태를 사용자가 원하는 상태로 맞추는 제어 루프를 실행

3) Worker Node (작업자 노드)

실제 애플리케이션 컨테이너(Pod)가 배포되어 동작하는 서버(노드) 영역

  • kubelet: 노드 에이전트로, API Server로부터 지시를 받아 컨테이너를 생성/삭제하는 등 관리
  • kube-proxy: 서비스 네트워킹을 담당하며, 로드밸런싱을 구현
  • Container Runtime: 컨테이너를 실제로 실행하는 런타임 환경
  • Pod : 1개 혹은 1개 이상의 컨테이너 그룹
반응형