쿠버네티스 전용 YAML 파일
- 쿠버네티스는 파드, 레플리카, 배포, 서비스 등과 같은 오브젝트 생성하기 위한 입력으로 YAML 파일 사용

- spec 아래에 container 작성을 까먹지 말자
apiVersion:
kind:
metadata:
spec:
- 쿠버네티스 정의 파일에는 항상 API 버전, 종류, 메타데이터, 사양 이렇게 4가지 최상위 필드가 포함됨
- 최상위 수준 또는 루트 수준 속성, 필수 필드이므로 설정 파일에 반드시 입력해야 함
apiVersion:
- 생성하려는 대상에 따라 오브젝트를 생성하는데에 사용하는 K8s API의 버전
- 처음은 v1
kind:
- 생성하려는 객체의 유형을 나타냄
- pod인 경우 Pod
- Pod, Service, ReplicaSet, Deployment 종류가 있음
- 이름, 레이블 등과 같은 개체에 대한 데이터
- 지정 형식과 달리 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, 관련 이벤트 등 확인 가능