클라우드/Docker & K8s

쿠버네티스 - 디플로이먼트 yaml 파일 예시, Kubernetes - Deployment.yaml sample

게임이 더 좋아 2022. 7. 30. 12:20
반응형
728x170
apiVersion: apps/v1 #반드시 선언되어야함 kubernetes 버전 참고
kind: Deployment   #반드시 선언되어야함 쿠버네티스 오브젝트의 종류
metadata: #반드시 선언되어야함
  name:        #오브젝트의 unique한 이름
  namespace:   #일반적으로 namespace를 지정해줌
  resourceVersion: 
  generation: 30
  creationTimestamp: 
  labels: #쿠버네티스 오브젝트를 선택하기 위한 것임 , 일반적으로 Selector에서 이용하기 위해 선언
    app: random
  annotations: #어노테이션은 오브젝트를 식별하거나 선택할 때 쓰지 못한다. 하지만 레이블에서 허용되지 않는 문자를 포함할 수 있다.(https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/annotations/)
  selfLink: #아직 어디다 쓰는지 모름
status: #오브젝트의 상태라고 한다. 쿠버네티스 컨트롤 플레인은 모든 오브젝트의 실제 상태를 사용자가 의도한 상태와 일치시키기 위해 끊임없이 그리고 능동적으로 관리한다. (status 를 spec에 일치시키려고함)
    #이 status를 직접 작성하지는 않으며 실행 중에 status로 오브젝트의 상태를 알 수 있다.
  observedGeneration: 30
  replicas: 11 
  updatedReplicas: 11
  readyReplicas: 11
  availableReplicas: 11
  conditions:
    - type: Progressing
      status: 'True'

spec: #반드시 선언되어야함 오브젝트의 명세라고 한다.
  replicas: 11
  selector: # Selector 역할:  app : abc 레이블이 있는 노드에 스케줄링됨
    matchLabels:
      app: abc
  template: #Replica 생성 시 어떻게 만들어야 하는지 쓰여진 명세
    metadata:
      creationTimestamp: null
      labels:
        app: random
    spec:
      volumes: #저장 공간을 뜻함
        - name: a1
          configMap:
            name: a2
      initContainers: #가장 먼저 시동되는 컨테이너(특수함)(https://kubernetes.io/ko/docs/concepts/workloads/pods/init-containers/)
      containers: #실제 파드가 가지고 있는 컨테이너
        - name: c1
          image: #링크가 될 수 있고 디렉토리가 될 수 있음
          ports: #파드 안에서 사용되는 포트(컨테이너)
            - containerPort: 8080
          resources: #해당 컨테이너의 자원 명세
            limits:
              cpu: 1.0 #1코어
              memory: 2Gi
            requests:
              cpu: 1500m #1.5코어
              memory: 2Gi
          volumeMounts:
            - name: v1
              mountPath: /v1/v2
          readinessProbe: #컨테이너의 probe 명세
            httpGet: #handler 중 하나
              path: /healthz
              port: 8080
            initialDelaySeconds: 30 # readiness probe에 대한 field들
            timeoutSeconds: 5
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 6
            
          lifecycle: #컨테이너의 셍명주기(https://kubernetes.io/ko/docs/concepts/containers/container-lifecycle-hooks/)
            preStop:
              exec:
                command:
                  - /bin/sh
                  - '-c'
                  - sleep 10
          terminationMessagePolicy: File
          imagePullPolicy: Always
      restartPolicy: Always #재시작 정책
      terminationGracePeriodSeconds: 60 #컨테이너 강제 종료 제한시간
      nodeSelector: #특정 노드를 고를 때 씀(노드에 GPU가 있어야만 한다던가 등)
        l1: r1
  strategy: #어떤 식으로 파드를 관리할 것인지
    type: RollingUpdate #롤링 업데이트 : 서비스를 중단하지 않으면서 업데이트 가능(https://kubernetes.io/ko/docs/tutorials/kubernetes-basics/update/update-intro/)
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600
반응형
그리드형

'클라우드 > Docker & K8s' 카테고리의 다른 글

구글 스터디잼  (0) 2022.10.21
K8s, Kubernetes - 기본 개념 (추가 중)  (0) 2022.10.06
쿠버네티스 - Probe  (1) 2022.07.30
쿠버네티스 기본 개념  (3) 2022.07.09
Docker, 도커의 개념  (0) 2022.07.09