devops

파드( Pods)와 디플로이먼트(Deployment) 본문

DevOps/Kubernetes

파드( Pods)와 디플로이먼트(Deployment)

vata500 2022. 6. 30. 15:49
반응형

파드(Pods)

파드는 쿠버네티스의 배포 가능한 가장 작은 컴퓨팅 유닛이다. 그 자체로 하나의 논리적인 호스트다.

  • 하나 이상의 어플리케이션 컨테이너
  • IP 주소
  • 공유 스토리지

쿠버네티스는 워크로드 리소스를 만들기 위해서 YAML과 같은 리소스 정의 파일을 사용한다.

* 워크로드?
쿠버네티스에서 '쿠버네티스 상에서 작동되는 어플리케이션'을 의미, 클라우드 분야에서는 '어떤 어플리케이션을 실행할 때 필요한 IT 리소스의 집합'이라는 의미로 통용

쿠버네티스에서 직접 사용자가 개별 파드를 만들일이 많지 않다. 파드는 일시적이고 언제나 삭제될 수 있기 때문이다. 파드가 실행되는 공간인 노드가 실패하면 그 안의 파드 역시도 사용할 수 없게된다.

컨테이너를 수동으로 만들고 관리하는 것은 도커만 사용해도 충분하다. 쿠버네티스는 컨테이너를 오케스트레이션하는 것이다. 쉽게 말해서 쿠버네티스는 파드에 장애가 발생하여 복구하거나, 복제하는 등의 일을 자동으로 처리하는 것이 핵심이다.

AWS로 따지면 ECS가 하는일과 비슷하다. 컨테이너의 로드밸런싱과 오토 스케일링같은 일을 담당한다. 그래서 파드는 디플로이먼트, 스테이트풀셋, 데몬셋을 이용해 관리하는 것이 바람직하다.

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

파드 생성을 위해 YAML파일로 정의해야한다. 

kubectl apply -f simple-pod.yaml

위 명령어로 파드를 생성한다. pod 생성 명령어는 apply와 create가 있다. apply는 생성하고 수정사항을 바로 apply로 반영하는 차이가 있다.

현재 생성된 컨테이너가 실행 중(Running)인 것을 확인

생성된 컨테이너에 대해서 확인하고 싶다면, 'kubectl describe pod/이름'을 명령어로 입력한다.

이름, 컨테이너 이미지, 포트와 파드 IP가 모두 나와있다.

kubectl delete -f simple-pod.yaml

삭제를 원하면 위 명령어를 입력한다.


디플로이먼트(Deployment)

디플러이먼트는 파드를 업데이트하기 위한 선언적 명세이다.

  • 레플리카셋을 이용해 파드를 원하는 개수만큼 실행할 수 있다.
  • 제어판(Control Plane)로 파드를 업데이트할 수 있다.
  • 파드를 롤백할 수 있다.

어플리케이션의 여러 복제본이 존재할 경우에 각각의 복제본을 새 버전으로 업데이트하는 방법으로, 쿠버네티스는  재생성 배포(Recreate)와 롤링배포(RollingUpdate)방식을 선택할 수 있다.

  • 재생성 배포 : 이전버전을 삭제하고 새 버전을 생성
  • 롤링 배포 : 이전버전을 scale down하고 새 버전을 scale up하는 방식, 단계별로 교체한다.
반응형
Comments