<aside> 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하는 오픈소스 시스템입니다.
</aside>
현대 애플리케이션은 빠른 개발과 빈번한 배포, 유연한 확장성, 높은 가용성을 요구합니다. 이를 위해 등장한 기술이 **컨테이너(Container)**이며, 대표적으로 Docker가 있습니다.
하지만 수십, 수백 개의 컨테이너를 운영 환경에서 안정적으로 관리하기 위해서는 이를 자동으로 조율하기위해 오케스트레이션(Orchestration) 도구가 필요했으며, 그 표준이 바로 쿠버네티스입니다.
쿠버네티스는 애플리케이션 배포 환경이 겪어온 문제들을 해결하기 위하여 탄생하였습니다.
쿠버네티스는 각자의 역할을 수행하는 여러 구성 요소들이 긴밀하게 협력하며 동작합니다.
노드 (Node) 쿠버네티스 클러스터를 구성하는 개별 서버(가상 또는 물리)입니다. 이 노드는 전체를 지휘하는 마스터 노드와, 실제 작업을 수행하는 워커 노드로 나뉩니다.
💡 비유: 회사를 구성하는 직원들. 경영진(마스터)과 실무자(워커)로 나뉩니다.
파드 (Pod) 컨테이너를 감싸는 가장 작은 실행 단위입니다. 보통 하나의 파드에 하나의 컨테이너가 들어가며, 동일 파드 내 컨테이너는 IP와 스토리지를 공유합니다.
💡비유: 직원 개개인의 사무 공간
디플로이먼트 (Deployment) 파드를 어떻게 생성하고 유지할지 선언적으로 정의하는 리소스이자 컨트롤러입니다.
💡 비유: 특정 프로젝트를 위해 팀을 구성하고 인원을 관리하는 프로젝트 매니저
서비스 (Service)
동적으로 바뀌는 파드들의 IP 대신 **고정된 접근 지점(DNS 이름)**을 제공하며, 요청을 자동으로 로드 밸런싱합니다.
💡 비유: 팀원이 바뀌어도 항상 연결되는 회사의 대표 번호
네임스페이스 (Namespace) 하나의 클러스터를 논리적으로 나눠, 서로 독립된 환경처럼 리소스를 격리하고 관리할 수 있는 기능입니다.
💡 비유: 개발팀, 기획팀처럼 목적에 따라 나뉜 회사의 부서