📍 현대 소프트웨어 인프라의 핵심 중 하나로, 대규모 서비스 운영, 클라우드 인프라, DevOps 등에 필수적인 기술

✅ 쿠버네티스(Kubernetes)란?
Google에서 개발하고 현재는 CNCF(Cloud Native Computing Foundation)에서 관리하는 오픈소스 컨테이너 오케스트레이션 플랫폼
컨테이너(예. Docker 🐳)를 자동으로 배포하고, 확장하고, 운영하는 시스템
🔧 쿠퍼네티스를 사용하는 이유?
현대 웹 서비스는 수십~수천 개의 컨테이너로 구성되며 이들을 직접 관리하기에는 너무 복잡함
기능 | 설명 |
자동 배포 | 정의한 설정대로 컨테이너를 자동 배포 및 재시 |
확장성 | 부하가 많으면 자동으로 인스턴스를 늘리고 줄일 수 있음 |
자가 치유 | 장애가 발생한 컨테이너를 자동으로 감지하고 재시작 |
롤링 업데이트 | 중단 없이 새 버전 배포 가능 |
서비스 디스커버리 & 로드 밸런싱 | 내부 DNS 및 로드 밸런서를 통해 자동으로 연결 관리 |
✨ 쿠버네티스의 핵심 개념
구성 요소 | 설명 |
pod | 하나 이상의 컨테이너를 포함하는 가장 작은 실행 단위 |
node | 컨테이너가 실행되는 서버(물리 서버 or 가상 머신) |
cluster | 여러 노드로 구성된 전체 쿠버네티스 환경 |
deployment | pod의 배포/업데이트 전략을 정의 |
service | pod에 대한 네트워크 접근을 제공 (로드밸런싱 포함) |
ingress | 외부에서 HTTP 요청을 받아 내부 서비스로 라우팅 |
ConfigMap/secret | 설정 값이나 민감 정보 관리 |
☁ 어디에 사용되나요?
AWS EKS, Google GKE, Azure AKS 등 주요 클라우드에서 쿠버네티스 제원
카카오, 네이버, 쿠팡 등 대규모 서비스에서 실제로 사용 중
DevOps, CI/CD, 마이크로서비스 환경에 필수
🤖 쿠버네티스 아키텍처
Master - worker 구조를 따름
Master
컨트롤 플레인에 해당
워커 노드들을 관리
컨테이너
pod들로 캡슐화
워커 노드들 내에 배포되어 실행됨
🛩 Control plane
컨테이너 오케스트레이션을 담당
클러스터의 상태 유지
Kube-apiserver
kubernetes API를 노출하는 컴포넌트 Kubectl로부터 리소스를 조작하라는 지시를 받음
etcd
고가용성을 갖춘 분산 key-value 스토어
쿠버네티스 클러스터의 백킹 스토어로 사용됨
Kube-scheduler
노드를 모니터링하고 컨테이너를 배치할 적절한 노트 선택
Kube-controller-manager
리소스를 제어하는 컨트롤러를 실행
📌 Kube-apiserver
사용자, 컴포넌트가 쿠버네티스 클러스터와 쉽게 통신할 수 있도록 함
(드물게) 모니터링 시스템이나 서드파티 서비스들이 클러스터들 간 통신하기 위해 사용할 수 있음
✔ 주요 역할
API 요청을 관리
API 객체 검증
사용자 인증 및 권한 부여
컨트롤 플레인과 워커 노트 컴포넌트들 사이에서 위치 조정 처리
API 서버는 etcd에서만 작동
📌 etcd
key-value 데이터 저장소
kubernetes 클러스터에서 저장되는 데이터를 위해 설계됨
pod, pod의 상태, namespace들과 관련된 데이터를 저장
kubernetes 클러스터의 뇌
보안을 위해 오직 API 서버에서만 접근 가능
일관성과 가용성을 엄격하게 지키기 위해 raft consensus algorithm을 사용
📌 kube-scheduler
워커 노드에서 kubernetes pod의 스케줄링을 담당
생성된 요청을 식별하고 요구 사항을 충족하는 pod가 배치될 가장 적합한 노드를 선택
