쿠버네티스란?

gclee·2024년 3월 19일

Kubernetes

목록 보기
1/7
post-thumbnail

쿠버네티스는 컨테이너 오케스트레이션 도구로, 수십 개에서 수천 개에 이르는 컨테이너를 효율적으로 관리합니다. 개발자와 시스템 관리자는 쿠버네티스를 사용하여 애플리케이션의 배포, 확장 및 운영을 자동화할 수 있습니다. 쿠버네티스는 복잡한 컨테이너 관리 작업을 추상화하여, 인프라를 보다 쉽게 관리할 수 있도록 돕습니다.

쿠버네티스의 아키텍처

쿠버네티스 클러스터는 마스터 노드(master node)와 워커 노드(worker node)로 구성됩니다.

  • 마스터 노드: 클러스터 관리, 스케줄링, 설정 및 관리 작업을 담당합니다. 주요 구성 요소로는 API 서버, 스케줄러, 컨트롤러 매니저, etcd(분산 키-값 저장소)가 있습니다.
  • 워커 노드: 컨테이너화된 애플리케이션을 실행하는 물리적 또는 가상의 머신입니다. 주요 구성 요소로는 컨테이너 런타임(Docker 등), kubelet(노드 관리자), kube-proxy(네트워크 프록시)가 있습니다.

쿠버네티스의 동작 원리

쿠버네티스는 선언적 구성(declarative configuration)과 자동화된 실행을 통해 애플리케이션을 관리합니다.

  • 파드(Pods): 쿠버네티스에서 관리하는 가장 작은 배포 단위입니다. 하나 이상의 컨테이너로 구성되며, 같은 파드 내의 컨테이너는 네트워크 및 저장소 리소스를 공유합니다.
  • 서비스(Services): 파드 집합에 지속적인 네트워크 주소를 제공합니다. 서비스를 통해 외부 또는 내부 트래픽을 파드로 라우팅할 수 있습니다.
  • 배포(Deployments): 파드와 레플리카셋(파드의 복사본 집합)의 상태를 선언적으로 관리합니다. 배포를 통해 애플리케이션의 업데이트와 롤백을 쉽게 수행할 수 있습니다.

추가로 알아둘 내용

  • 자동화된 롤아웃과 롤백: 쿠버네티스는 애플리케이션의 새 버전을 점진적으로 배포하고, 문제가 발생하면 이전 버전으로 롤백할 수 있습니다.
  • 자동화된 빈 패킹(bin packing): CPU, 메모리 등의 리소스 요구사항에 기반하여 컨테이너를 자동으로 워커 노드에 배치합니다.
  • 자동화된 복구(Self-healing): 쿠버네티스는 실패한 컨테이너를 재시작하고, 정의된 상태와 다르게 동작하는 컨테이너를 교체하며, 사용할 수 없는 노드에서 실행되는 컨테이너를 다른 노드로 이동시킵니다. 이러한 기능은 시스템의 안정성을 보장합니다.
  • 수평 확장(Horizontal Scaling): 쿠버네티스를 사용하면 명령어 한 줄이나 웹 UI를 통해 애플리케이션을 쉽게 확장하거나 축소할 수 있습니다. 또한, CPU 사용량 같은 메트릭을 기반으로 자동으로 확장할 수도 있습니다.
  • 서비스 발견과 로드 밸런싱(Service Discovery and Load Balancing): 쿠버네티스는 파드에 IP 주소와 단일 DNS 이름을 사용해 접근할 수 있는 서비스를 자동으로 생성합니다. 이를 통해 로드 밸런싱과 서비스 발견을 쉽게 구현할 수 있습니다.

0개의 댓글