열정 실천

쿠버네티스(Kubernetes)가 모게~? 기본 개념, 구성 요소, 용어 정리 본문

CS/공부노트

쿠버네티스(Kubernetes)가 모게~? 기본 개념, 구성 요소, 용어 정리

구운오니 2024. 11. 18. 20:33
728x90

🤗 쿠버네티스란?

컨테이너를 쉽고 빠르게 배포, 확장 및 관리를 자동화해주는 오픈소스 플랫폼 

 

 

 

전통적인 배포 시대에서는 하나의 CPU에 하나의 애플리케이션을 실행했고 이는 자원을 효율적으로 사용하는 방법이 아니었다. 이후 하나의 물리 서버의 CPU에 여러 가상 머신을 실행하여 여러 애플리케이션을 독립적으로 관리하는 가상화 방법이 도입되었다.  더 나아가 애플리케이션 간 OS까지 공유하는 컨테이너 기능이 탄생했다. 

 

전통적인 방식 -> 가상화 방식 -> 컨테이너 방식

 

 

컨테이너 기반 애플리케이션을 배포 및 관리하고 제어, 모니터링, 스케일링, 네트워킹을 관리하는 도구를 컨테이너 오케스트레이션 이라고 한다. 컨테이너 오케스트레이션의 종류에는 Doker Swarm, Apache Mesos, Normard 등이 있지만 가장 많이 쓰이는 것이 이번에 배울 쿠버네티스! 이다. 

 

 

 

 

쿠버네티스 구조 및 구성요소

 

 

  1. 마스터 노드(Control Plane)
    마스터 노드는 클러스터를 관리하고 제어하는 역할을 한다. 주된 작업은 클러스터의 상태를 모니터링하고, 파드(Pod)의 배포와 확장을 자동으로 처리하며, 애플리케이션의 상태를 유지한다.
    • API 서버: 쿠버네티스 클러스터의 입구로, 모든 명령어가 이곳을 통해 처리됨
    • 컨트롤러 매니저: 클러스터의 상태를 조정하고, 목표 상태와 실제 상태를 일치시키는 역할
    • 스케줄러: 워커 노드에서 파드를 실행할 노드를 선택
    • etcd: 클러스터의 모든 데이터를 저장하는 분산 키-값 저장소
  2. 워커 노드(Worker Node)
    워커 노드는 실제로 애플리케이션이 실행되는 노드이다. 워커 노드에는 파드(Pod)가 배포되며, 각 워커 노드는 쿠버네티스 클러스터의 일부로서 컨테이너를 실행하고 관리한다.
    • Kubelet: 각 노드에서 실행되는 에이전트로, 마스터 노드의 명령을 받아 파드를 관리하고 보고
    • 컨테이너 런타임: 실제로 컨테이너를 실행하는 소프트웨어 (예: Docker, containerd)
    • Kube-proxy: 네트워크 규칙을 관리하고, 서비스 간의 통신을 지원하는 역할

 

 

 

 

▶ POD

:: 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 단위 (하나 이상의 컨테이너)

 

하나의 파드는 한 개의 어플리케이션 컨테이너와 스토리지, 네트워크 설정을 포하고 주요 어플리케이션을 위한 컨테이너와 그 보조 컨테이너를 실행한다. 

 

 

▶ 서비스 Service

:: 쿠버네티스에서 실행되고 있는 파드를 네트워크에 노출시키는 가상의 컴포넌트

 

파드의 IP 주소가 고정되지 않는데, 이로 인해 다른 파드나 외부에서 접근하기 어렵다. 서비스를 사용하면 파드들의 변경과 관계없이 고정된 IP와 DNS 이름을 제공하여 네트워크 상에서 안정적으로 접근이 가능하다. 

 

 

네임스페이스 Namespace

:: 쿠버네티스 클러스터 내에서 자원들을 논리적으로 분리하는 방법 

 

한 클러스터 내에서 여러 환경(예: 개발, 테스트, 프로덕션)을 구분하거나, 여러 팀이 동일한 클러스터를 공유할 때 네임스페이스를 활용한다.

 

 

▶볼륨 Volume

:: Pod 내의 컨테이너들이 데이터를 저장하고 공유할 수 있는 저장소

 

컨테이너 내부의 파일 시스템은 휘발성이라 컨테이너가 재시작되면 데이터는 모두 삭제된다. 하지만 볼륨을 사용하면 데이터를 영구적으로 저장 및 유지할 수 있다. 이 뿐만 아니라 볼륨은 NFS(네트워크 파일 시스템), 클라우드 스토리지 등 다양한 스토리지 시스템을 지원한다. 

728x90