on
쿠버네티스 YAML configuration 파일 설명 및 YAML 문법 검사 사이트
쿠버네티스 YAML configuration 파일 설명 및 YAML 문법 검사 사이트
728x90
# 쿠버네티스의 YAML 설정 파일에 대해서 알아보자.
- Configuration 파일의 3가지 구성요소?
1. metadata : 리소스의 라벨, 이름 등을 지정함
2. specificaion : 각 컴포넌트에 대한 상세 설명 및 어떤 오브젝트 종류인지에 내용을 설명
3. status : 쿠버네티스가 자동으로 생성, 자신의 원하는 상태가 되도록 현재 상태를 나타냄
- 예를 들어 spec에 replicas가 2라고 명시되어 있지만 현재 상태는 status에는 1개로 명시 되어 있다면, 목표 상태로 맞추기 위해 replicas를 하나 더 생성하게 된다.
- apiVersion은 스크립트를 실행하기 위한 쿠버네티스 API 버전을 명시하고 Kind는 리소스의 종류를 명시한다. (POD, Service, ReplicaSet, Deployment)
[ Labels & Selectors ]
Labels : Pod와 같은 오브젝트에 첨부된 키와 값의 쌍이다. 오브젝트의 특성을 식별하는데 있어 사용자에게 중요하지만, 시스템에 직접적인 의미는 없다.
Selectors : Label을 기반으로 오브젝트를 어떻게 선택하는지에 대한 방법의 표현이다.
- 예를 들어 하나의 오브젝트에 Key-Value로 Label을 지정하고, Selector로 env: dev인걸 선택하면, env가 dev인 것들만 나오게 된다는 뜻이다.
- 예제를 통해서 자세히 알아보자.
예제1) nginx-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: # 3가지 필수 구성요소중 하나 name: nginx-deployment # 해당 이름으로 디플로이 먼트가 생성됨. labels: app: nginx spec: # 3가지 필수 구성요서중 하나 specification, 나머지 하나는 status replicas: 3 # 3개의 리플리카 pod를 생성한다. selector: # 디플로이먼트가 관리할 파드를 찾는 방법을 정의, matchLabels이 nginx인 파드를 디플로이먼트가 관리한다. matchLabels: app: nginx template: metadata: labels: app: nginx # 파드는 .metadata.labels 필드를 사용 app: nginx 라는 레이블을 붙인다. spec: containers: - name: nginx # 컨테이너 1개를 생성, .spec.template.spec.containers[0].name 필드를 사용해서 nginx 라는 이름을 붙인다. image: nginx:1.14.2 # 파드가 도커 허브의 nginx 1.14.2 버전 이미지를 실행하는 nginx 컨테이너 1개를 실행하는 것을 나타낸다. ports: - containerPort: 80
.metadata.name 필드에 따라 nginx-deployment 이름으로 디플로이먼트가 생성된다.
.spec.replicas 필드에 따라 디플로이먼트는 3개의 레플리카 파드를 생성한다.
.spec.selector 필드는 디플로이먼트가 관리할 파드를 찾는 방법을 정의한다. 이 사례에서는 파드 템플릿에 정의된 레이블(app: nginx)을 선택한다. 그러나 파드 템플릿 자체의 규칙이 만족되는 한, 보다 정교한 선택 규칙의 적용이 가능하다.
template 필드에는 다음 하위 필드가 포함되어있다. 파드는 .metadata.labels 필드를 사용해서 app: nginx 라는 레이블을 붙인다. 파드 템플릿의 사양 또는 .template.spec 필드는 파드가 도커 허브의 nginx 1.14.2 버전 이미지를 실행하는 nginx 컨테이너 1개를 실행하는 것을 나타낸다. 컨테이너 1개를 생성하고, .spec.template.spec.containers[0].name 필드를 사용해서 nginx 이름을 붙인다.
- 아래 명령을 이용하여 yaml 파일로 명시한 시방서로 디플로이먼트를 생성한다.
kubectl apply -f nginx-deployment.yaml
예제2) tomcat-deployment.yaml
apiVersion: apps/v1beta2 kind: Deployment metadata: name: tomcat-deployment spec: selector: matchLabels: app: tomcat replicas: 4 template: metadata: labels: app: tomcat spec: containers: - name: tomcat image: tomcat:9.0 ports: - containerPort: 8080 nodeSelector: # nodeSelector는 이미지를 가져다가 설치할 때 노드의 SSD에 설치하라고 지정하는 selector이다. storageType: ssd
nginx 예제와 비슷하지만 nodeSelector는 이미지를 가져다가 설치할 때 노드의 SSD에 설치하라고 지정하는 selector이다.
마찬가지로 아래 명령을 이용하여 yaml 파일로 명시한 시방서로 디플로이먼트를 생성한다.
kubectl apply -f tomcat-deployment.yaml
- YAML 문법이 맞는지 검사하는 사이트
onlineyamltools.com/validate-yaml
- 끝 -
728x90
from http://may9noy.tistory.com/427 by ccl(A) rewrite - 2021-12-28 17:26:57