본문 바로가기

클라우드

[쿠버네티스] 쿠버네티스에서 yaml config 파일 작성하는 방법과 pod 만들어보기

728x90
반응형

쿠버네티스에서 YAML config 파일 작성법

쿠버네티스는 yaml 기반의 config 파일(명세서) 로 pod, replica, deployment 등을 만들 수 있습니다.

이러한 config 파일은 항상 아래의 기본 구조를 따르게 됩니다.

apiVersion:
kind:
metadata:
spec:

 

 

위의 4개 속성들이 상위 레벨의 속성들로, 필수 필드이기 때문에 항상 config 파일에 항상 포함되어 있어야합니다.

상위 속성에 대해 간단하게 알아봅시다.

 

 

apiVersion

개체를 생성할 때 몇버전의 쿠버네티스를 기반으로 선언할 것인지 알려주는 곳입니다.

기본적으로 아래와 같이 version 을 기재할 수 있으며, 아래의 표 외에도 autoscaling/v1 와 같이 필요한 기능에 따라 다른 apiVersion 을 사용할 수도 있습니다 

kind version
Pod v1
Service v1
ReplicaSet apps/v1
Deployment apps/v1

kind

어떤 유형의 개체를 만들건지 명시하는 곳입니다. ex) Pod, Service, Deployment …

metadata

생성한 개체에 대한 이름이나 label 같은 데이터를 기재하는 곳입니다.

하위 속성에 필요한만큼 key-value 값을 적어 필요한 데이터들을 명시해줍니다.

spec

생성하려는 개체의 스펙을 명시하는 곳입니다.

개체 종류가 Pod인지, Service 등인지에 따라 필요한 속성값들이 다르기 때문에 공식 문서를 참고하여 개채에 맞는 속성을 기재해야 합니다.

 

 

yaml config 파일로 pod 를 만들어보기

  • pod-config.yml
apiVersion: v1
kind: Pod
metadata:
	name: tech-pod
	labels:
		app: tech
		type: backend
		environment: stage
spec:
	containers:
		- name: nginx-container
		  image: nginx
		- name: db-container
		  image: redis

 

위와 같이 상위 속성들에 따라 하위에 필요한 데이터들을 기재하여 Pod 를 만들 수 있습니다.

위는 가장 기본적으로 pod 를 기재하기 위한 하위 속성들을 적은 config 파일로, 각 속성에 대해 알아봅시다.

 

metadata.name

해당 Pod 를 식별하기 위한 이름입니다.

metadata.labels

서비스가 커져서 pod 가 수십, 수백개로 늘어나게 되면 해당 pod 를 관리하기 위해 필터링 등이 필요하게 됩니다.

그 때 이 label 의 속성을 사용하여 필터링이나 pod 의 구분을 쉽게 할 수 있습니다.

이를 위해 해당 pod 의 type 이라거나, 구동 환경 등 필요한 태그들을 label 하위에 추가합니다.

containers

pod 하나에는 여러개의 컨테이너를 띄울 수 있는데요, containers는 이 컨테이너들에 대한 데이터를 명시하는 속성입니다.

예시의 하위에 있는 name 으로 이름을 정의하고, image 속성에 적한 이름을 가진 이미지를 docker 나 repository 에서 받아옵니다.

이 외에도 ports 등의 속성을 사용해 추가적으로 컨테이너에 대한 정보를 명시할 수도 있습니다.

pod 안에 여러 개의 컨테이너를 띄우고싶다면, dash 를 이용하여 리스트의 새로운 element 들을 추가하면 됩니다.

 

 

 

위처럼 config 파일을 작성했다면, 아래의 명령어를 이용하여 작성한 yml 파일을 참고하여 pod 를 만들수 있습니다.

kubectl create -f pod-config.yml

작성한 config 가 잘 반영되었는지는 아래의 명령어로 확인할 수 있습니다.

kubectl describe pod tech-pod

 

728x90
반응형