YAML 기반 구성 파일
쿠버네티스는 YAML 파일을 pod, 복제본, 배포, 서비스 등의 개체 생성을 위한 입력으로 사용한다.
YAML 기반 구성 파일 작성하기
쿠버네티스 정의 파일은 항상 4개의 상위 레벨(root 레벨) 필드(속성)를 필수적으로 포함한다.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
apiVersion
개체를 생성할 때 사용하는 쿠버네티스 API 버전. 만들려는 게 무엇이냐에 따라 올바른 API 버전을 사용해야 한다.
Kind | Version |
POD | v1 |
Service | v1 |
ReplicaSet | apps/v1 |
Deployment | apps/v1 |
kind
만들려는 개체 유형
metadata
이름이나 라벨과 같은 개체에 대한 데이터. 앞서 apiVersion이나 kind가 String 값으로 명시된 것과 달리 metadata는 Dictionary 형태로 정의하기 때문에 metadata 하위의 모든 것은 의도된 것이며 이름과 라벨은 metadata의 하위 집합체이다. 따라서 sibling (형제, 이름과 라벨의 level)은 부모(meta) 데이터의 공백보다는 많아야 하며, 두 slibing 개체 앞의 공백(" ")의 개수가 같아야 한다.
나중에 수 백개의 프런트엔드와 백엔드 애플리케이션이 생기면 type으로 필터링이 가능하다.
# 잘못된 parent-child level
metadata:
name: myapp-pod
labels:
app: myapp
# 잘못된 sibling level
metadata:
name: myapp-pod
labels:
app: myapp
# 올바른 level
metadata:
name: myapp-pod
labels:
app: myapp
Spec
생성하려는 개체에 따라 추가 정보를 제공하는 곳. container라는 List/Array 프로퍼티를 추가하여 여러 컨테이너를 넣을 수 있다. 그 하위에 dash(-)를 사용하여 컨테이너 List의 첫번째 항목부터 name과 image를 넣을 수 있다.
YAML 기반 구성 파일 시작하기
pod 시작하기
kubectl create -f pod-definition.yml
전체 pod 목록 보기
kubectl get pods
"-o wide" 옵션을 주면 pod가 설치된 node도 확인 할 수 있다.
kubectl get pods -o wide
특정 pod 세부 정보 보기
kubectl describe pod myapp-pod
'Devops > Kubernetes' 카테고리의 다른 글
[Kubernetes] Minikube로 Kubernetes 환경 구축하기 (0) | 2023.11.08 |
---|---|
[Kubernetes] Core Components (0) | 2023.11.08 |