클러스터에 배포하고 싶은 '의도'나 '상태'를 정의하는 객체(Object)들입니다. 사용자는 이 리소스들을 통해 클러스터가 어떻게 동작하기를 원하는지 선언합니다.
리소스 객체의 상태를 감시하고, 현재 상태(Current State)를 사용자가 정의한 원하는 상태(Desired State)로 일치시키는 역할을 하는 조정자(Reconciliation Loop) 입니다.
CPU 사용량이나 메모리 같은 메트릭을 기준으로 파드(Pod)의 개수를 자동으로 늘리거나 줄이는 역할을 합니다. 트래픽이 많아지면 파드를 늘려 부하를 분산하고, 트래픽이 줄면 파드를 줄여 자원을 효율적으로 사용합니다.
파드와 레플리카셋(ReplicaSet)의 배포 및 업데이트를 관리합니다. 애플리케이션의 버전 관리, 롤링 업데이트, 롤백 등 복잡한 배포 전략을 손쉽게 구현할 수 있도록 도와주는 핵심 컨트롤러입니다.
지정된 수의 동일한 파드가 항상 실행되도록 보장하는 역할을 합니다. 파드가 비정상적으로 종료되면 새로운 파드를 생성하여 개수를 맞춥니다. 보통 사용자가 직접 다루기보다 Deployment를 통해 간접적으로 관리됩니다.
클러스터 내에서 상태를 나타내는 영속적인 실체들입니다. 시스템이 무엇을, 어떻게 구성해야 하는지를 나타냅니다.
여러 파드(Pod)에 대한 안정적인 단일 네트워크 진입점(Endpoint)을 제공합니다. 파드는 생성되거나 삭제될 때마다 IP가 변경될 수 있지만, 서비스는 고유한 IP와 DNS 이름을 유지하여 외부 또는 내부에서 애플리케이션에 안정적으로 접근할 수 있게 합니다.
일반 설정 정보(Configuration)를 키-값(Key-Value) 쌍으로 저장하고, 이를 파드와 분리하여 관리할 수 있게 해주는 객체입니다. 애플리케이션 코드 변경 없이 설정을 유연하게 주입할 수 있습니다.
비밀번호, API 키, TLS 인증서 등 민감한 데이터를 저장하는 객체입니다. ConfigMap과 유사하지만, 데이터가 Base64로 인코딩되어 저장되는 등 좀 더 안전하게 관리됩니다.
쿠버네티스에서 생성하고 관리할 수 있는 가장 작은 배포 단위입니다. 하나 이상의 컨테이너 그룹이며, 스토리지와 네트워크 자원을 공유합니다.
사용자가 스토리지 자원을 요청하는 객체입니다. "10GB 크기의 빠른 디스크가 필요하다"와 같이 필요한 스토리지의 사양을 정의하면, 쿠버네티스는 이 요청에 맞는 PV를 찾아 연결해 줍니다.
클러스터 관리자가 미리 준비해 둔 실제 스토리지 자원 그 자체입니다. NFS, iSCSI, 클라우드 스토리지 등 실제 물리적/논리적 저장 공간을 나타내며, PVC의 요청에 따라 할당됩니다.
클러스터 전체를 관리하고 조율하는 '두뇌' 역할을 하는 핵심 컴포넌트들의 집합입니다.
역할: 쿠버네티스 API를 외부에 노출하는 클러스터의 유일한 관문(Gateway)입니다. 모든 요청(kubectl, UI, 내부 컴포넌트 등)을 받아 유효성을 검사하고 etcd에 저장하는 역할을 합니다.
클러스터의 모든 상태 데이터(리소스 정보, 노드 상태 등)를 저장하는 Key-Value 타입의 데이터베이스입니다.
쿠버네티스에 내장된 모든 컨트롤러(ReplicaSet, Deployment 등)를 실행하고 관리하는 프로세스입니다. 클러스터의 상태를 지속적으로 모니터링하며 etcd에 저장된 원하는 상태를 유지합니다.
새로 생성된 파드를 어떤 워커 노드에 배치할지 결정하는 역할을 합니다. 각 노드의 리소스 여유 공간, 레이블, 제약 조건 등을 종합적으로 판단하여 최적의 노드를 찾아줍니다.
이 컴포넌트는 컨트롤 플레인이 아닌 클러스터의 모든 노드(마스터/워커)에서 실행됩니다. 서비스(Service) 개념을 구현하기 위해 각 노드의 네트워크 규칙(iptables 등)을 관리하여, 특정 서비스로 향하는 트래픽이 올바른 파드로 전달되도록 하는 역할을 합니다.
클러스터를 제어하기 위해 사용하는 명령줄 도구(CLI)**입니다. kube-apiserver와 통신하여 리소스를 생성, 조회, 수정, 삭제하는 작업을 수행합니다.
쿠버네티스 클러스터를 쉽게 설치하고 설정(Bootstrap)하기 위한 도구입니다. 클러스터 생성, 업그레이드, 노드 추가/제거 등의 작업을 도와줍니다.
kube-apiserver로부터 해당 노드에 할당된 파드 정보를 받아, 컨테이너 런타임(예: containerd)을 통해 컨테이너가 정상적으로 실행되도록 관리하고 상태를 보고합니다. 마스터 노드에서는 컨트롤 플레인 컴포넌트 자체를 파드 형태로 실행하고 관리하는 역할을 합니다.