Skip to main content

00. 쿠버네티스 개념

쿠버네티스?

핵심 개념: 오케스트레이션 (지휘자)

도커(Docker)가 컨테이너 하나를 만들고 실행하는 기술이라면, 쿠버네티스는 그 컨테이너들을 여러 서버에 적절히 배치하고, 죽으면 살리고, 트래픽을 분산시키는 관리자

Proxmox가 VM(가상머신)들의 수명 주기를 관리한다면, 쿠버네티스는 컨테이너들의 수명 주기를 관리

가장 중요한 철학은 Desired State(원하는 상태)
사용자가 "웹 서버 컨테이너 3개를 유지해라"라고 명령해 두면, 쿠버네티스는 현재 상태를 끊임없이 감시하다가 2개로 줄어들면 1개를 더 만들고, 4개가 되면 1개를 죽여서 항상 3개를 유지

Orchestrator란?

여러 컴퓨터 시스템, 애플리케이션, 서비스, AI 에이전트 등을 조율하고 관리하여 복잡한 워크플로를 자동화하는 시스템 또는 도구

쿠버네티스가 필요한 이유

홉랩에서 도커나 nginx로 블로그를 운영하고 있을 때 예시

예시 1) 갑자기 트래픽이 몰려서 Ghost 블로그가 다운

기존 : 관리자가 수동 재부팅

k8s : 트래픽 폭주 시 Ghost 블로그 서버를 자동 증설하고 트래픽이 줄어들면 다시 원복 (Auto-scaling)

예시 2) 서버(VM) 한 대가 고장

기존 : 새 VM을 만들고, 도커 깔고, 백업 파일 가져와서 복구

k8s : 서버 다운 시 대기하고 있던 백업서버로 자동 복구 (Self-healing)

핵심 기능

자동 복구 (Self-healing)

선수가 부상을 당하면(컨테이너가 죽으면), 감독이 즉시 불펜에서 대기하던 다른 선수를 올립니다. 사용자님이 개입할 필요가 없습니다.

오토 스케일링 (Auto-scaling)

관중이 갑자기 몰려들면(트래픽 폭주), 매표소 직원(서버)을 1명에서 10명으로 순식간에 늘렸다가, 사람이 빠지면 다시 1명으로 줄입니다.

무중단 배포 (Rolling Update)

유니폼을 갈아입어야(버전 업데이트) 할 때, 경기를 중단하지 않습니다. 선수들이 한 명씩 교대로 라커룸에 다녀오게 해서, 경기는 계속 진행되게 만듭니다.

주요 구성 요소

Pod (파드)

쿠버네티스에서 배포할 수 있는 가장 작은 단위

보통 파드 1개에 컨테이너 1개를 넣지만, 필요에 따라 로그 수집기 같은 보조 컨테이너를 함께 넣어 2개 이상이 될 수 있음

Proxmox의 VM 1개와 비슷. 고유한 IP를 하나 가짐

 

ReplicaSet & Deployment (리플리카셋 & 디플로이먼트)

파드의 개수와 배포 버전을 관리하는 컨트롤러

기능 : "Nginx 파드를 항상 3개 유지해라" 혹은 "버전 1.0에서 2.0으로 업데이트해라" 같은 명령을 수행

 

Service (서비스)

파드는 수시로 죽고 새로 생기기 때문에 IP가 계속 변경.

서비스는 고정된 IP(Cluster IP)를 제공하여 여러 파드로 트래픽을 분산(Load Balancing)