k8s는 뭘까?

1. 쿠버네티스는 왜 쓰는건가?

컨테이너를 하나만 띄우면 docker run으로 충분하지만,

  • 서버 수십~수백 대
  • 컨테이너 수백~수천 개
  • 자동 복구, 부하 분산, 롤링 업데이트 필요
    이런 상황이 되면 사람이 직접 관리 불가능하다.

Kubernetes가 대신 해준다.

하는 일

  • 컨테이너 배포 자동화
  • 컨테이너 상태 모니터링 및 장애 시 재시작
  • 부하에 따라 컨테이너 수 자동 조절 (오토스케일링)
  • 서비스 디스커버리(컨테이너 주소 관리)
  • 롤링 업데이트와 롤백

 

2. 쿠버네티스는 서비스인가? 프로젝트인가? 판매 소프트웨어인가? 정체가 뭔가?

 

Kubernetes(K8s)는 개인이나 특정 회사가 만든 상용 서비스가 아니라 오픈소스 소프트웨어 프로젝트다.

1. 처음 만든 곳

  • Google이 내부에서 쓰던 Borg라는 시스템을 기반으로 개발
  • 2014년에 오픈소스로 공개

2. 지금 관리하는 곳

  • 현재는 CNCF(Cloud Native Computing Foundation)라는 비영리 단체가 관리
  • CNCF는 리눅스 재단(Linux Foundation) 산하 조직이라, 특정 기업의 소유가 아니라 여러 회사와 커뮤니티가 함께 유지·보수

3. 서비스 vs. 소프트웨어 차이

  • GitHub → Microsoft가 소유한 상용 웹 서비스
  • Kubernetes → 누구나 설치하고 운영할 수 있는 무료 오픈소스 소프트웨어
  • 단, Google Cloud, AWS, Azure 같은 클라우드 업체가 "관리형 Kubernetes 서비스"를 유료로 제공하긴 함

(예: GKE, EKS, AKS)

 

즉, K8s 자체는 서비스가 아니라 도구이고,
누구나 내려받아 서버에 깔아서 쓸 수 있다.

 

3. 그럼 어떻게 k8s를 설치할 수 있는가?

1. kubectl 설치 (K8s 관리 툴)

kubectl은 Kubernetes 클러스터를 조작하는 CLI 도구다.

Windows (PowerShell 예시)
powershellcurl.exe -LO "https://dl.k8s.io/release/v1.30.0/bin/windows/amd64/kubectl.exe"
그리고 kubectl.exe를 PATH에 추가

 

그럼 클러스터는 어떻게 만드는가

1. Minikube

설치:
powershell
choco install minikube

실행:
powershell
minikube start

2. Kind 설치 (Docker 기반)

설치:
powershell
choco install kind

실행:
powershell
kind create cluster
도구  역할  비유
kubectl Kubernetes CLI 도구. 이미 존재하는 K8s 클러스터에 명령을 보내고 상태를 확인함. 항만 관리 시스템의 무전기
Minikube 로컬 PC에 K8s 클러스터를 만들어주는 도구 (VM 또는 Docker 사용) 집 앞에 작은 항구를 설치하는 기계
Kind Docker 컨테이너로 K8s 클러스터를 만드는 도구 Docker 컨테이너로 만든 모형 항구

 

  1. MinikubeKind가 → Kubernetes 클러스터를 생성
  2. kubectl이 → 그 클러스터에 명령을 보냄
  3. 명령에 따라 Pod, Service, Deployment 같은 Kubernetes 리소스가 생성·삭제됨

4. 그렇다면 클러스터는 뭔가?

 

비유

  • 컨테이너 = 배에 실린 개별 화물
  • Docker = 화물 하나를 포장하고 출발시키는 트럭
  • Kubernetes = 수백 개 트럭과 배를 운영하는 항만 물류 관리 시스템