04_YAML 파일을 이용한 쿠버네티스 오브젝트 관리

Nari.·2024년 10월 13일
0
post-custom-banner

쿠버네티스 작업을 한다는 것은 각 기능을 구현하는 코드를 찾아서 작성하는 것을 의미한다. 쿠버네티스 코드를 작성하는 데는 주로 YAML파일을 사용하며 모든 쿠버네티스 리소스와 해당 옵션은 YAML 파일로 구현할 수 있다.

01. YAML 파일 익스포트 플러그인 kube-neat 설치

모든 쿠버네티스 오브젝트는 YAML 파일로 실행하고, 실행 중인 모든 오브젝트는 YAML 파일로 익스포트(export) 할 수 있다.

테스트를 위해 busybox 이미지를 사용하여 파드를 띄운다. busybox이미지는 1~5MB의 작은 용량에 많이 사용하는 유닉스 유틸리티(ping, nc, nslookup)을 포함하고 있어서 문제가 발생했을 때 디버깅 용도로 많이 사용한다.

# busybox 이미지로 busybox 이름의 파드 생성
$ kubectl run busybox --image=busybox
pod/busybox created

$ kubectl get pod
NAME      READY   STATUS             RESTARTS      AGE
busybox   0/1     CrashLoopBackOff   5 (66s ago)   4m9s
nginx     1/1     Running            0             131m

다른 파드와 다르게 계속 실행되는 프로세스가 없기 때문에 CrashLoopBackOff가 떴다. command 옵션으로 계속 실행되는 프로세스를 추가해야한다.

## 실행 중인 busybox 파드를 yaml 파일로 익스포트하기
$ kubectl get pod busybox -o yaml
...
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2024-10-13T13:48:10Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2024-10-13T13:48:10Z"
    message: 'containers with unready status: [busybox]'
    reason: ContainersNotReady
    status: "False"
    type: Ready
...

하지만 kube-neat플러그인은 익스포트된 yaml 파일에서 불필요한 정보를 제거한다.

## 플러그인 매니저인 krew를 이용하여 kube-neat 설치
$ kubectl krew install neat

$ kubectl get pod busybox -o yaml | k neat
apiVersion: v1
kind: Pod
metadata:
  annotations: ...

02. YAML 파일을 이용한 파드 배포

익스포트한 busybox 파드의 YAML 파일을 busybox-pod.yml 이라는 이름으로 저장하고 이 파일에 command 옵션을 추가해보자.

$ kubectl get pod busybox -o yaml | k neat > busybox-pod.yml

yaml 파일에서 사용하는 배열(list) 데이터 타입은 '-'기호를 사용하고 위에서부터 순서대로 항목을 나열한다.

03. 쿠버네티스 YAML 템플릿 파일 검색 및 네이밍 규칙을 적용해 파일 저장하기

템플릿 파일은 쿠버네티스 공식 홈페이지에서 제공하고 있다.

post-custom-banner

0개의 댓글