Pod with YAML

Yu Sang Min·2025년 5월 19일

CKA

목록 보기
9/110
post-thumbnail

📌 YAML

  • K8S YAML 파일은 Pods, Replications, Deployment 등 오브젝트 생성을 위한 입력으로 사용
  • 항상 상위에 4개의 field를 포함한다 (Root Level Property) 루트 레벨 속성
apiVersion:
kind:
metadata:


spec:
  • 필수 필드이니 반드시 구성 파일에 있어야 한다.

✅ apiVersion

  • 이 개체(YAML파일로 생성하려는 것)를 생성할 때 사용하는 K8S api 버전
  • 만드려는게 무엇이냐에 따라 올바른 버전 사용하고 있어야함
  • 현재 만드는 것이 Pod이기 때문에 v1으로 설정
# vi pod-definition.yaml

apiVersion: v1
kind:
metadata:

spec:
  • 이 필드에서 사용가능한 value: v1, apps/v1 등등

✅ kind

  • 개체 유형을 가리킴
  • 위 경우에 Pod
  • 사용 가능한 다른 value: `ReplicaSet’, ‘Deployment’, ‘Service’ 등등
apiVersion: v1
kind: Pod
metadata:

spec:

✅ metadata

  • 이름이나 레이블 등
  • 이 들은 metadata의 자식요소임
  • 공백의 개수 상관없지만 형제 요소끼리는 공백이 같아야함!
  • name 필드는 문자열 즉, Pod의 이름
  • labels 필드는 dictionary, 원하는 대로 키(key)와 값(value) 쌍을 가질 수 있음
  • 다른 labels을 추가로 지정할 수 있고 이는 식별을 용이하게 함
  • 수백개의 프론트엔드, 백엔드, 데이터베이스를 레이블로 지정해주면 이를 기반으로 파드를 필터링
  • 중요한건 labels에서는 원하는 대로 키나 값 쌍을 가질 수 있다는것
  • 그래서 각각의 매개변수가 무엇을 기대하는지 이해하는게 중요
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
    type: front-end

spec:

✅ spec

  • 쿠버네티스에게 만들 개체에 대한 스펙을 알려줌
  • 스펙은 하나만 들어감
  • 아래에 containers 필드를 자식으로 가진다
  • containers는 목록 또는 배열
  • 멀티플 컨테이너를 생성할 수 있기때문
  • - (대시문자)는 목록의 첫번째를 알려줌
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
    type: front-end

spec:
  containers:
  - name: nginx-container
     image: nginx

⌨️ Pod 생성하는 명령어

$ kubectl create -f pod-definition.yaml
$ kubectl get pods
$ kubectl describe pods
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글