Pods with YAML

Watermelon·2025년 12월 12일

CKA 학습 과정

목록 보기
16/35

쿠버네티스 전용 YAML 파일

  • 쿠버네티스는 파드, 레플리카, 배포, 서비스 등과 같은 오브젝트 생성하기 위한 입력으로 YAML 파일 사용
  • spec 아래에 container 작성을 까먹지 말자
apiVersion:
kind:
metadata:

spec:
  • 쿠버네티스 정의 파일에는 항상 API 버전, 종류, 메타데이터, 사양 이렇게 4가지 최상위 필드가 포함됨
  • 최상위 수준 또는 루트 수준 속성, 필수 필드이므로 설정 파일에 반드시 입력해야 함

apiVersion:

  • 생성하려는 대상에 따라 오브젝트를 생성하는데에 사용하는 K8s API의 버전
  • 처음은 v1

kind:

  • 생성하려는 객체의 유형을 나타냄
  • pod인 경우 Pod
  • Pod, Service, ReplicaSet, Deployment 종류가 있음

metadata:

  • 이름, 레이블 등과 같은 개체에 대한 데이터
  • 지정 형식과 달리 metadata는 사전 형식
metadata:
	name: myapp-pod
    labels:
    	app: myapp
  • 위와 같이 작성할 수 있음
  • name과 labels는 metadata의 하위 항목
  • 객체 식별에 도움이 될 수 있음

프론트엔드 애플리케이션을 실행하는 수백 개의 파드와 백엔드 애플리케이션 또는 데이터베이스가 있다고 가정

  • type: front-end 등으로 표시해둔다면 그룹화하기 편함
  • 메타데이터 아래에는 이름이나 레이블 또는 K8s가 메타데이터에 포함될 것으로 예상되는 항목만 표기
  • labels 아래에는 원하는 대로 모든 종류의 키 또는 값 쌍을 사용할 수 있음
  • 표기 규칙을 잘 정해둔 상태 또는 사내 규칙에 따라 사용하는 것이 좋음

spec:

  • 만들고자하는 개체에 따라 다르게 작성됨
  • 오브젝트와 관련된 추가 정보를 K8s에 제공
  • 문서 섹션을 이해거나 참조하여 각각에 적합한 형식 파악 중요

    예시에서는 컨테이너가 하나만 들어있는 포드

spec:
	containers:
    	- name: nginx-container
          image: nginx
  • contatiners 는 List/Array 형식(멀티 컨테이너 존재 가능성)
  • -는 목록의 첫 번째 항목임을 나타냄
  • 목록의 항목에 이름과 이미지 속성 추가
  • image 값은 Docker 리포지토리에 있는 Docker 이미지의 이름인 nginx로 정함

YAML 파일 실행

pod-definition.yml

apiVersion: v1
kind: Pod
metadata:
	name: myapp-pod
    type: front-end

spec:
	containers:
    	- name: nginx-container
          image: nginx
kubectl create -f pod-definition.yml
  • 파일 실행 시 파드 생성됨

  • kubectl describe pod <NAME>: 파드에 대한 자세한 정보 확인

  • name은 kubectl get pod로 확인할 수 있음

  • 파드가 생성된 시기, 파드에 할당된 레이블, 파드 일부 docker container, 관련 이벤트 등 확인 가능

profile
많은 경험을 해보고자 하는

0개의 댓글