k8s에서는 yaml 파일을 이용해서 pod를 생성합니다.
yaml 파일에는 아래 4개의 상위 필드를 항상 포함해야 합니다. 이것들이 루트속성의 필드들이고 yaml 파일의 골격입니다.
하나씩 살펴보며 자세히 알아보겠습니다.
apiVersion : v1
사용할 apiVersion을 적는 부분입니다. 생성하려는 object에 따라 사용해야되는 apiVersion이 정해져 있으므로 확인한다음 생성해야 합니다 예를들어 Service는v1 Deployment는 apps/v1를 사용해야 합니다.
kind : Pod
어떤 객체를 생성할 것인지 적는부분 ex) pod, replicaset, service 등등.
metadata
name: myapp-pod
labels:
app: myapp
객체에 대한 데이터 ex) name, lable 등등
단 dictionary 형태로 적어야 하며 공백으로 부모 자식 관계를 구분합니다. 공백이 얼마나 되는지는 상관없고 같은 형제끼리는 같은 공백을 가지는게 중요합니다. 아래에서는 name과 labels 이 형제이기 때문에 같은 세로선상에 존재하며 app은 labels의 자식이기 때문에 더 많은 공백을 가져야 합니다
spec :
containers:
- name: nginx-container
image: nginx
우리가 생성하려는 개체에 대한 정보가 들어가야 합니다. 어떤 이미지 파일을 사용할 건지 container의 이름은 뭘로 할 것인지와 같은 정보들을 적어주면 됩니다.
완성된 yaml 파일의 모습은 위 사진과 같으며 이를 이용해 pod를 생성하려면 다음과 같은 명령어를 사용하면 됩니다.
생성 : kubectl create -f pod-definition.yml
확인 : kubectl get pods
상세정보 : kubectl describe pod myapp-pod