Kubernetes 오브젝트
Kubernetes 오브젝트
Kubernetes에서 클러스터의 원하는 상태(Desired State)를 정의하는 영구적 엔티티로, YAML 또는 JSON 형식으로 작성되며 API Server를 통해 etcd에 저장되어 컨트롤러가 이를 실제 상태로 유지
오브젝트 구조: apiVersion(API 버전), kind(오브젝트 종류), metadata(이름/네임스페이스/레이블), spec(원하는 상태 Desired State), status(현재 상태 시스템 관리/읽기 전용)
워크로드 오브젝트: Pod(최소 배포 단위/1개 이상 컨테이너), Deployment(Pod 복제본 관리/롤링 업데이트), ReplicaSet(Pod 복제본 수 유지/Deployment가 관리), StatefulSet(상태 유지 앱 DB/순서 보장/안정적 ID), DaemonSet(모든 노드에 Pod 1개씩/로깅/모니터링), Job/CronJob(일회성/주기적 작업 실행)
서비스/네트워킹 오브젝트: Service(Pod 그룹에 안정적 접근점 제공), Ingress(HTTP/HTTPS 라우팅/외부 노출), NetworkPolicy(Pod 간 네트워크 접근 제어)
설정/스토리지 오브젝트: ConfigMap(비민감 설정 데이터), Secret(민감 데이터 암호/키), PersistentVolume PV(클러스터 스토리지), PersistentVolumeClaim PVC(스토리지 요청)
기타 오브젝트: Namespace(리소스 논리적 분리), ServiceAccount(Pod 신원 인증), Role/RoleBinding(RBAC 권한 관리)
비교: Deployment(복제본O/순서X/공유 스토리지/Stateless 앱) vs StatefulSet(복제본O/순서O/개별 스토리지/Stateful 앱 DB) vs DaemonSet(노드당 1개/순서X/에이전트) vs Job(완료까지/순서X/일회성 작업)
kubectl 주요 명령어: kubectl apply -f(오브젝트 생성/업데이트), kubectl get(리소스 목록 조회), kubectl describe(상세 정보 조회), kubectl logs(Pod 로그 조회), kubectl exec(Pod 내 명령 실행), kubectl delete(리소스 삭제)
연관: Kubernetes, YAML, 선언적 구성, 컨트롤러