Learning
토픽 28 / 107·컨테이너 오케스트레이션

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, 선언적 구성, 컨트롤러