본문 바로가기
CSP (Cloud Service Provider)

쿠버네티스 STEP1 run, YAML

by BTC_주먹쥐고 일어서 2022. 7. 29.

쿠버네티스 클러스터를 컨트롤하기 위해 kubectl이라는 명령툴을 사용합니다.

 

kubectl run

복제될 수 있는 특정 이미지를 만들고 실행하며 생성된 컨테이너를 관리하기 위한 배포 또는 작업을 생성합니다.

 

kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]

 

 


 

 

 

YAML (선언형 명령  정의서)

쿠버네티스에 요청하려면

1.어떤 오브젝트를 사용할 지  2.상세설정을 YAML파일 형식으로 정의 해야 합니다. 

어떤 텍스트에 어떤 에디터를 사용하든 상관없이 해당 형식에 맞기만 하면 됩니다!

 

이때 YAML이란?

  • .yaml 혹은 .yml 확장자를 가진 파일을 기술하는 문법
  • 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식
  • 출력 가능한 유니코드 문자 집합(UTF-8, UTF-16 등)을 이용
  • 데이터를 표현하는 다른 형식(XML, JSON)보다 읽기 쉽게 표현 가능

 


 

 

POD YAML파일의 필수 구성 요소

apiVersion: v1
kind: Pod                  
metadata:
  name:                 
spec:
정의 설명 예시
version 오브젝트 버전 v1, app/v1, networking.k8s.io/v1, ...
kind 종류 Pod, ReplicaSet, Deployment, Service, ...
metadata 메타데이터 name과 label, annotation(주석)으로 구성
spec 상세명세 리소스 종류마다 다름

 

 

1) YAML 기본문법

- 들여쓰기 ( indent )

   2칸(추천) 혹은 4칸을 지원

   같은 부모를 가질 경우, 자식끼리는 들여쓰기가 일치해야한다.

apiVersion: v1    
kind: Pod         
metadata:         
  name: BTC-pod   
spec:           
  containers:                  # 부모  
   - name: BTC-container       # 자식
     image: kubeetm/BTC-image  # 자식

- 데이터 정의 ( map ) 

   key : value 형식으로 정의 

1) key와 value사이에는 반드시 빈칸이 필요
2) 대부분의 문자열을 따옴표 없이 사용할 수 있지만  :가 들어간 경우는 반드시 따옴표가 필요
apiVersion: v1
kind: Pod                     # kind(Key) : Pod(Value)
metadata:
  name: BTC-pod               # name(Key) : BTC-pod(Value)
spec:
  containers:                 
  - name: BTC-container       # name(Key) : BTC-container(Value)

- 배열 정의 ( array )

  배열은 - 로 표시하거나 [ a, b, c ]형식으로 한 라인에 표현 가능  

apiVersion: v1
kind: Pod                  
metadata:
  name: pod-1                 
spec:
  containers:                  # container name 나열 
  - name: BTC-container                  
    image: kubetm/BTC-image       
    ports:
    - containerPort: 8000      # container port 나열 
  - name: BTC-container2       # container name 나열 
    image: kubetm/p8080      
    ports:
    - containerPort: 8080      # container port 나열

 

- 주석 ( comment)

    주석은 # 로 표시 

# comment = 전체 라인 주석 처리 
apiVersion: v1    
kind: Pod         
metadata:         
  name: BTC-pod   
spec:           
  containers:                   
   - name: BTC-container        # subicure 부분 주석 처리 
     image: kubeetm/BTC-image

- 참/거짓 , 숫자 표현

   참 :  true, yes

   거짓 :  false , no  지원 

BTC : yes
give_up: no
besbin global tech center : True
busan tech center: false

   숫자 : " 따옴표 없이 사용하면 숫자로 인식 

                    "123" -> string으로 인식 

# number
version: 1.2

# string
version: "1.2"

 

- 줄바꿈  ( newline)

  |   :  마지막 줄바꿈 포함 

{
  "newlines_sample": "number one line\nsecond line\nlast line\n"
}
newlines_sample: |
            number one line

            second line

            last line

  |- : 마지막 줄바꿈 제외 

{
  "newlines_sample": "number one line\n\nsecond line\n\nlast line"
}
newlines_sample: |-
            number one line

            second line

            last line

  > :  중간에 들어간 빈줄을 제외  

{
  "newlines_sample": "number one line\nsecond line\nlast line\n"
}
newlines_sample: >
            number one line

            second line

            last line

 

 

 

참고) YAML 문법 체크 사이트
http://www.yamllint.com/

 

 

YAMLlint - The YAML Validator

YAML Lint Paste in your YAML and click "Go" - we'll tell you if it's valid or not, and give you a nice clean UTF-8 version of it. Optimized for Ruby.

www.yamllint.com

 

'CSP (Cloud Service Provider)' 카테고리의 다른 글

카카오 공공 클라우드 소개  (1) 2022.08.22
[NHN Cloud] Vaccine 서비스 소개  (0) 2022.08.16
MongoDB  (0) 2022.07.18
트리의 개념과 구현  (0) 2022.07.08
Hyperframe 소개  (0) 2022.05.20

댓글