IT기술/쿠버네티스 (k8s)

k8s 쿠버네티스 매니페스트

후스파 2025. 3. 23. 00:00
반응형

쿠버네티스 kubernetes k8s

쿠버네티스 매니페스트 파일은 YAML/JSON 형식으로 클러스터 리소스를 선언적으로 정의하는 설정 파일입니다. 주요 리소스 배포와 관리를 위해 반드시 숙지해야 하는 핵심 요소를 설명드립니다.

매니페스트 파일 기본 구조

apiVersion: apps/v1       # API 그룹 및 버전 (예: v1, apps/v1)
kind: Deployment          # 리소스 유형 (Pod, Service 등)
metadata:
  name: my-app            # 리소스 고유 이름
  labels:                 # 선택적 레이블
    app: my-app
spec:                     # 리소스의 상세 명세
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
 
 
 

주요 리소스 유형별 예시

1. Pod 매니페스트

apiVersion: v1
kind: Pod
metadata:
  name: web-pod
  labels:
    app: web
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80
 
 

2. Deployment 매니페스트

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
 
 

3. Service 매니페스트

apiVersion: v1
kind: Service
metadata:
  name: web-svc
spec:
  type: NodePort
  selector:
    app: web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30007
 
 
 

작성 가이드 & 주의사항

1. API 버전 선택

  • 안정 버전 권장: v1 > v1beta1 > v1alpha1
  • 리소스별 지원 버전 확인:
 
kubectl api-resources | grep <리소스명>
 

2. 메타데이터 구성

  • name: DNS 호환 형식으로 작성 (소문자, 숫자, -만 허용)
  • labels: 리소스 식별을 위한 키-값 쌍 (예: env: prod)

3. 스펙(Spec) 작성 요령

  • Pod
    containers 필드에 이미지, 포트, 리소스 제한 명시
  • Deployment
    replicas로 복제본 수 설정, selector로 Pod 그룹 지정
  • Service
    type으로 서비스 유형 지정 (ClusterIP/NodePort/LoadBalancer)

4. 멀티 오브젝트 파일

--- 구분자로 여러 리소스를 하나의 파일에 정의 가능:

 
 
apiVersion: v1
kind: Pod
metadata:...
---
apiVersion: v1
kind: Service
metadata:...
 

매니페스트 적용 방법

  • 파일 적용
 
kubectl apply -f manifest.yaml
 
  • 리소스 확인
 
kubectl get pods,deploy,svc
 
  • 삭제
 
kubectl delete -f manifest.yaml
 

Best Practices

  1. 버전 관리: Git과 연동해 변경 이력 추적
  2. 레이블 활용: app, env 등의 표준 레이블 사용
  3. 의존성 관리: ConfigMap/Secret은 별도 파일로 분리
  4. 유효성 검사: kubectl apply --dry-run=client로 사전 점검

 

 

[k8s] 쿠버네티스 매니페스트 파일 생성

쿠버네티스에서 매니페스트(manifest) 파일은 클러스터 내 리소스의 상태를 정의하고, 이를 통해 쿠버네티...

blog.naver.com

 

 

[k8s 설치 가이드] 쿠버네티스 설치 방법 총정리: 초보자부터 전문가까지

쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션을 위한 강력한 오픈소스 플랫폼입니다. 본 글에서는 다양한 환경에서 쿠버네티스를 설치하는 방법을 상세히 알아보겠습니다. 쿠버네티스 설

hoosfa.tistory.com

 

 

반응형