티스토리 뷰








정중한 지적은 언제나 환영합니다!
댓글로 편히 남겨주세요


블로그의 이미지 및 개념은 https://github.com/ej31 님의 자료를 참고 하였습니다. 미리 감사의 말씀을 드립니다.

 

 

쿠버네티스 오브젝트 (k8s Object) ?

 

쉽게 말해 쿠버네티스 컨트롤 명령어인 kubectl create 로 생성되는 모든 것이 쿠버네티스 오브젝트라 할 수 있다.

 

쿠버네티스 클러스터 안에는 다양한 오브젝트들이 존재하며, 해당 오브젝트가 관리하는 리소스(Pod, Network 등등)가 있다.

 

하나의 클러스터 안에 여러 네임스페이스가 존재하며, 네임 스페이스 안에 여러 오브젝트가 관리 된다.

 

오브젝트의 필수 필드는 아래와 같다. 

 

먼저 오브젝트를 정의 하는 Yaml 파일을 확인해보자. 

 

 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx:latest

 

  • apiVersion: 이 오브젝트를 해석할 API 버전 (예: apps/v1)
  • kind: 어떤 종류(타입)의 오브젝트인지 (예: Deployment)
  • metadata: 오브젝트에 대한 이름, 라벨, 네임스페이스 등 메타데이터 정보
  • spec: 사용자가 원하는 설정(의도, desired state)을 구체적으로 정의하는 곳

 

위의 4가지 정보를 바탕으로 쿠버네티스 환경을 유지하기 위해 자동화 작업을 실행한다. 

 

 오브젝트들을 관리하기 위해선 kubectl 명령어를 통해 할 수 있는데 아래와 같다.

 

1. 생성

kubectl apply -f <오브젝트_정의파일.yaml>

 

2. 조회

kubectl get <오브젝트_타입>
kubectl get pods
kubectl get deployments
kubectl describe <오브젝트_타입> <오브젝트_이름>

 

3. 삭제

kubectl delete -f <오브젝트_정의파일.yaml> #파일로 인해 생성된 모든 오브젝트 삭제
kubectl delete <오브젝트_타입> <오브젝트_이름>

 

 

선언형 vs 명령형

선언형

- Yaml 파일에 내가 원하는 상태를 지정하고 apply 시킴으로 쿠버네티스에 적용

 

명령형

kubectl create

 같은 명령을 통해 하나하나 직접 조작

 

=> 협업, 버전 관리 측면에서 선언형을 권장한다 합니다

 

 

대표적인 쿠버네티스 오브젝트

  1. Pod → 가장 작은 배포 단위, 컨테이너를 감싸고 있는 기본 단위
  2. ReplicaSet → 같은 Pod를 지정된 수만큼 유지 관리
  3. Deployment → ReplicaSet을 더 편리하게 관리하기 위한 상위 레벨 오브젝트
  4. Service → Pod에 네트워크 서비스(접근 경로)를 제공
  5. ConfigMap / Secret → 애플리케이션 설정값, 민감 정보 등을 외부에서 주입
  6. Ingress → 외부 트래픽을 내부 Service로 라우팅
  7. StatefulSet, DaemonSet, Job, CronJob 등 특수 용도의 오브젝트

'k8s' 카테고리의 다른 글

쿠버네티스) StatefulSet에 대해  (0) 2025.01.22