관리 메뉴

피터의 개발이야기

[kubernetes] kubectl yaml 파일 생성, 쿠버네티스 yaml 작성 본문

Kubernetes/기초공부

[kubernetes] kubectl yaml 파일 생성, 쿠버네티스 yaml 작성

기록하는 백앤드개발자 2024. 1. 17. 13:36
반응형

[kubernetes] 쿠버네티스 목차

ㅁ 들어가며

 쿠버네티스의 pod, deployment를 생성하기 위해 template를 작성하야 한다. kubectl로 쉽게 샘플 yaml파일 만드는 방법을 정리하였다.

 

## 목차 ##
dry-run 옵션 사용
생성된 Pod 정보에서 샘플 얻기
kubernetes 공식문서에서 샘플 얻기

 

ㅁ dry-run 옵션 사용

 ㅇ dry-run 옵션은 실제 구동하는 것이 아니라 테스트를 위한 옵션이다.

 ㅇ --dry-run=client 요청 시 client에 요청을 보내면 kubectl  client가 해석을 하여 yaml 파일을 생성해 준다.

 

$ k run nginx-pod --image=nginx:alpine --dry-run=server -o yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2024-01-17T04:18:30Z"
  labels:
    run: nginx-pod
  name: nginx-pod
  namespace: default
  uid: 789ec33f-afbb-4b60-96a5-b327666743c5
spec:
  containers:
  - image: nginx:alpine
    imagePullPolicy: IfNotPresent
    name: nginx-pod
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-zt4pt
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: kube-api-access-zt4pt
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          expirationSeconds: 3607
          path: token
      - configMap:
          items:
          - key: ca.crt
            path: ca.crt
          name: kube-root-ca.crt
      - downwardAPI:
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
            path: namespace
status:
  phase: Pending
  qosClass: BestEffort

 

 ㅇ --dry-run= server은 controlplane의 api-server에게 요청을 하여 샘플 yaml 파일을 받는다.

 ㅇ 다른 메타정보가 포함되어 있어서 샘플 yaml로 사용하기는 부적합하다.

 

$ kubectl create deployment  webapp --image=kodekloud/webapp-color --replicas=3 --dry-run=client -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: webapp
  name: webapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webapp
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: webapp
    spec:
      containers:
      - image: kodekloud/webapp-color
        name: webapp-color
        resources: {}
status: {}

 ㅇ deployment 샘플 yaml을 얻을 때에는 create 명령어를 이용한다.

 

 ㅇ run의 다양한 옵션을 추가하여 샘플 yaml를 얻을 수 있다.

ㅁ 생성된 Pod 정보에서 샘플 얻기

# 이미 pod가 존재하는 경우
$ k get po nginx-pod 
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          84s

# 출력 옵션 yaml 사용
$ k get po nginx-pod -o yaml
apiVersion: v1
kind: Pod
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"creationTimestamp":null,"labels":{"run":"nginx-pod"},"name":"nginx-pod","namespace":"default"},"spec":{"containers":[{"image":"nginx:alpine","name":"nginx-pod","resources":{}}],"dnsPolicy":"ClusterFirst","restartPolicy":"Always"},"status":{}}
  creationTimestamp: "2024-01-17T04:23:03Z"
  labels:
    run: nginx-pod
  name: nginx-pod
  namespace: default
  resourceVersion: "1054"
  uid: 3e0fd779-1424-4595-9d15-505464d5c984
spec:
  containers:
  - image: nginx:alpine
~~~~~~~~~~~~~~₩

 ㅇ 이미 생성된 Pod로부터 샘플 yaml을 얻을 수 있다.

 ㅇ 기존에 생성되어 있어서 metadata가 존재하지만, 비슷한 Pod를 생성할 경우 필요없는 정보만 삭제하여 재사용을 할 수 있어서 작업이 편리한 방법이다.

 

ㅁ kubernetes 공식문서에서 샘플 얻기

 ㅇ 쿠버네티스 공식 문서에서 원하는 Object를 검색한다.

 

ㅇ 샘플 yaml정보를 쉽게 찾을 수 있다.

ㅇ 오른쪽 상단의 복사버튼을 클릭한다.

 

 ㅇ 샘플 yaml 텍스트가 복사된다.

 ㅇ 필요한 곳에 붙여서 사용하기 편하다.

 

ㅁ 함께 보면 좋은 사이트

kubernetes 공식 문서

반응형
Comments