Object란?
쿠버네티스 시스템의 상태를 나타내는 영속성 엔티티
Object 주요 특징
Spec (명세)
사용자가 정의한 "원하는 상태"
설명 그대로 사용자가 kubernets에 원하는 상태를 정의하는 역할을 한다. 정의 가능 내용에는 아래와같은 내용들이 있다.
- 컨테이너 이름
- 사용 이미지
- 리소스 제한 (CPU, MEM)
- 볼륨 마운트 (Local, PVC)
Status (상태)
kubernetes Cluster의 "현재 상태"
Status는 현재 상태를 나타내며, Spec 에서 사용자가 정의한 상태를 유지하려고 능동적으로 작업한다.
"읽기 전용"이므로 사용자가 수정할 수 없고, 변경 시 event가 발생한다.
Object 종류
1. Pod
kubernetes 에서 배포되는 최소 단위이며, 하나 이상의 컨테이너를 그룹화하고 동일한 네트워크 네임스페이스를 공유
샘플 코드
apiVersion: v1
kind: Pod
metadata: # kubernetes 에서 추가적인 정보를 입력하여 사용자가 구분, 인식하기 쉽게 하기 위함.
name: my-pod
spec:
containers:
- name: nginx
image: nginx
2. Deployment
Application 배포와 상태 관리를 해주는 Object 이다.
롤링 업데이트, 롤백을 지원
샘플 코드
apiVersion: apps/v1
kind: Deployment
metadata: # 사용자가 분류하기 위한 정보들
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.17.10
3. Service
Pod 사이의 통신 및 외부 노출을 하기 위한 Object
샘플 코드
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
4. ConfigMap
Pod에 적용할 환경변수, 설정 파일을 작성하는 Object
샘플 코드
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_ENV: "production"
LOG_LEVEL: "info"
5. Secret
Pod에 적용할 비밀번호, API 인증키 등의 정보를 안전하게 적용하기 위한 Object
샘플코드
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque
data:
password: cGFzc3dvcmQ=
6. PersistentVolume(PV) & PersistentVolumeClaim(PVC)
PV : 실제 저장소를 정의하기 위한 Object
PVC : Pod가 어떤 PV를 사용할지 정의해주는 Object
샘플코드 (PV)
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data
샘플코드 (PVC)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
7. Ingress
외부에서 서비스에 접근할 수 있도록 HTTP(S) 라우터 설정을 하는 Object
샘플코드
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
Object 간의 관계
주로 많이 사용하는 Object들로 간단한 관계도를 그려보았다. 많이 빠진 부분도 많지만 추가해나가면서 보완해나갈 예정이다.

맺음말
이 Object를 정리하게 된 계기는 Deployment, Service 파일이 어떤 역할을 하는것인지 명확하게 인지하지 못하고 테스트를 진행하였다. 그러다보니 목적지로 가는 길을 많이 돌아서 갔었고, 사소한 개념들로 인해 인프라적인 자원도 많이 낭비한다는 것을 깨닫게 되었고 이 파일을 작성하게 되었다.
kubernetes는 내가 작성한 것 외에도 다양한 Object들이 있으며 자세한건 공식 사이트에 들어가서 검색해보면 친절히(?) 다 설명 되어있다. 아직 부족한 부분도 많고 배워야할게 더 많다는것을 느끼며....
앞으로 많은 서비스들을 구축해보면서 필요한 부분은 추가적으로 작성해나갈 예정이니 많은 관심과 사랑(?) 부탁드립니다.
Refs
오브젝트 공식 문서 : https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/
쿠버네티스 오브젝트 이해하기
이 페이지에서는 쿠버네티스 오브젝트가 쿠버네티스 API에서 어떻게 표현되고, 그 오브젝트를 어떻게 .yaml 형식으로 표현할 수 있는지에 대해 설명한다. 쿠버네티스 오브젝트 이해하기 쿠버네티
kubernetes.io
'infra > Kubernetes' 카테고리의 다른 글
| kubernetes ELK 설치 - Elasticsearch Node, Cluster 설계 (0) | 2025.04.12 |
|---|---|
| Kubernetes ELK 설치 - ELK vs Grafana (0) | 2025.03.20 |
| kubernetes (Cluster, Node, Pod) 란? (0) | 2025.03.13 |