Home (K8S) 파드
Post
Cancel

(K8S) 파드

이 글은 Mumshad Mannambeth가 강의한 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 커리큘럼을 토대로 공부한 내용을 정리하였음을 밝힙니다.


파드란?

파드(pod)는 컨테이너를 다루는 기본 단위이다. 파드는 1개 이상의 컨테이너로 구성된 컨테이너의 집합을 의미한다. 즉, 여러 개의 컨테이너로 하나의 파드를 구성할 수도 있다.

파드 하나는 완전한 애플리케이션이다. 예를 들어, Nginx 컨테이너 1개만으로 파드를 구성할 수 있다. 왜냐하면 Nginx 컨테이너 그 자체만으로도 완전한 애플리케이션이기 때문이다. 즉, 2개의 Nginx 컨테이너가 하나의 파드로 정의되는 것은 바람직하지 않다.

한편, Nginx의 설정 파일의 변경 사항을 갱신해주는 reloader 프로세스나 로그 수집 프로세스 등 Nginx와 함께 실행되어야 하는 기능 확장 컨테이너의 경우 Nginx와 함께 하나의 파드로 구성할 수 있다. 이렇게 추가 기능을 위해 부가적으로 정의된 컨테이너를 사이드카(sidecar) 컨테이너라고 한다.


YAML을 이용한 파드 생성 (기초)

쿠버네티스는 YAML 파일을 이용해서 파드, 레플리카, 디플로이먼트, 서비스 등을 생성한다. 모두 비슷하게 생긴 구조를 갖추고 있다.

  • YAML의 root level property

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
      apiVersion: v1 # 오브젝트를 만들기 위해 우리가 쓰는 쿠버네티스 API버전
      kind: Pod # 오브젝트의 타입을 명시한다
      metadata: # 오브젝트에 대한 데이터, 즉, name, labels, etc ...
        name: myapp-pod # dictionary 형태이므로 indent 주의
        labels:
          app: myapp
    
      # 이 위까지는 어떤 컨테이너나 어떤 이미지로 파드를 구성할지 지정하지 않았다.
      # 아래부터 세부 사항(specification, i.e., spec)을 지정한다.
    
      spec:
        containers: # List 형태다. 즉, 하나의 파드에 여러 컨테이너가 들어갈 수 있다.
        - name: nginx-container # '-'를 붙인 것은 이것이 리스트의 첫 아이템임을 의미하는 것!
          image: nginx
    
    • apiVersion

      kindversion
      PODv1
      Servicev1
      ReplicaSetapps/v1
      Deploymentapps/v1
    • labels

      • 추후 labels에 정의한 레이블을 통해서 오브젝트를 구분할 수 있다.
      • 예를 들어서, 수백개의 프론트엔드 파드와 수백개의 백엔드 파드가 배포되었다고 해보자. 한번 배포되고 나면 종류에 따라 파드들을 그룹핑하기 쉽지 않다.
      • 이러한 파드들에 대해서 프론트엔드 레이블, 백엔드 레이블 이런 식으로 레이블해두면 추후 구분하기 용이하다.

YAML 파일이 준비되었으면 kubectl create -f pod-definition.yaml 명령어로 파드를 생성할 수 있다.

kubectl get pods로 실행중인 파드를 볼 수 있고, kubectl describe pods <파드의 이름>으로 구체적인 정보를 볼 수 있다.


참고 문헌

[1] Mumshad Mannambeth의 강의 : Certified Kubernetes Administrator (CKA) with Practice Tests
[2] 시작하세요! 도커/쿠버네티스 (용찬호 지음) : 시작하세요! 도커/쿠버네티스

This post is licensed under CC BY 4.0 by the author.