본문 바로가기

Programming/Cloud

DAY 175. 쿠버네티스(Kubernetes) - Yaml 파일

 

YAML : YAML Ain't Markup Language

- 데이터 중심으로 표기하겠다는 문서 타입

- 마크업 언어를 사용하는 것보다 이해하기 쉽고 수월하게 작성할 수 있다.

- 설정 값들의 깊이에 따라서 들여쓰기 등을 통해서 계층 구조를 쉽게 파악할 수 있도록 되어 있다.

- 여러 개의 값은 - (마이너스) 로 구분한다.

- Pod를 만들 때 필요한 설정들을 작성

 

쿠버네티스 오브젝트 생성하고 관리할 때 명령어보다 Yaml 파일 사용을 권장한다.

개발자가 명령어를 외울 필요가 없다.

공백 두 개로 들여쓰기를 표현한다. (Tab 안됨)

들여쓰기 기준으로 계층적 구조를 가진다

# 기호를 주석으로 사용한다

대소문자를 구분한다.

 

 

▶ Pod를 생성할 때, 쿠버네티스에서 Yaml 파일의 기본 구조

apiVersion : 사용한 K8S API의 버전 명세(우리가 만들고자 하는 오브젝트의 API 버전 명시)

kind : 생성할 오브젝트(리소스) 타입 명시

metedata : 파일에서 만드는 오브젝트의 정보

   Name : 생성할 이름

   Labels

      App : 사용할 라벨

spec : 생성할 리소스의 구체적인 상세 내용 정의

   containers:

  - name : 이름

    image

    ports

    - containerPort : 컨테이너가 노출할 포트 지정

       procotol : 기본 값은 TCP

 

02_Kubernetest -> 01_Pod -> kuweb-pod.yaml

 

 

 

▶ Yaml 파일로 Pod 생성하기

kubectl apply -f Yaml파일경로 [옵션]

예시 >  kubectl apply -f .\kuweb-pod.yaml

 

처음 만들 때 : pod/kuweb-pod created

수정하고 다시 apply 할 때 : pod/kuweb-pod configured

라고 출력됨

 

kubectl describe pod kuweb-pod

해보면 yaml 파일 수정했던 부분이 적용됐던 것들을 확인해가며 볼 수 있다.

 

 

 

 

기본적으로 먼저 만든 컨테이너가 Default가 되지만 다른 컨테이너한테 작업 시키고 싶으면 -c 옵션을 준다.

 

▷ kubectl exec kuweb-pod -c alpine-linux -- ifconfig

IP 확인하는데 (컨테이너의 IP를 볼 수 있다. => Pod의 IP와 같다.)

 

▷ kubectl exec kuweb-pod -it -c alpine-linux -- /bin/ash

 

 

더보기

[실습] 지금 2개의 컨테이너를 만들어 놓은 상태

 

 

kuweb-pod의 IP (나한테는 지금 10.1.0.22인 상태)

다른 컨테이너의 8080포트로 요청을 보내도 응답을 받아올 수 있다. IP를 공유해서 사용한다.

pod는 하나의 애플리케이션으로 컨테이너를 묶어놓은 것인데 Pod의 IP는 10.1.0.17인데 

컨테이너는 하나의 IP를 공유해서 사용하기 때문에 각 컨테이너의 IP도 동일하다.

localhost도 10.1.0.17이고 IP 직접 입력해도 되지만, 물리적으로 분리된 각각의 환경을 가지지만 IP를 가지지만 동일한 localhost여도 같은 10.1.0.17이다.

kuweb의 tomcat으로 요청을 보내면 응답해주는걸 alpine-linux에서 받아올 수 있다.

열려있는 포트만 겹치지 않으면 원하는 컨테이너로 요청을 보낼 수 있다.

 

 

 

 

 Pod 삭제

kubectl delete pods Pod명(혹은 파일명) | -l label | --all [옵션]

예시 > kubectl delete -f .\kuweb-pod.yaml