본문 바로가기
Kubernetes

[Kubernetes] Deployment를 이용한 Pod 배포 - Deployment와 Pods의 차이점

by sum_mit45 2024. 10. 24.
728x90
반응형
10/24(목) 실습 

(실습) Deployment를 이용한 Pod 배포

1. nginx-deploy.yml 파일 생성

nano nginx-deploy.yml 명령어로 파일을 생성한 후 아래와 같이 작성해준다. 

# API 버전
apiVersion: apps/v1

# 객체 종류
kind: Deployment

# 객체에 대한 정보를 생성
metadata:
  name: nginx-deploy
  labels:
    app: nginx
spec:
  replicas: 2    # 2개의 파드 생성
  selector:      # Deployment가 관리할 파드를 선택
    matchLabels:
      app: nginx
  template:      # 이 정보를 가지고 pod를 생성
    metadata:
      labels:
        app: nginx
    spec:        # 컨테이너 정보
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
  • apiVersion: 사용할 Kubernetes API의 버전을 지정한다.
  • kind: 생성할 리소스의 유형을 정의. 현재는 Deployment를 지정하여 애플리케이션을 배포하고 관리할 수 있는 리소스 생성
  • metadata: 이 섹션은 리소스에 대한 메타 정보를 포함한다. name은 리소스의 이름을 지정하고, labels은 리소스를 분류할 수 있는 레이블을 정의한다. app:nginx 레이블은 해당 리소스를 nginx 애플리케이션과 연결한다.
  • spec: 이 섹션은 Deployment의 내부 정보를 포함한다. replicas는 생성할 파드의 수를 정의하고, selector는 Deployment가 관리할 파드를 선택하는 방법을 정의한다. 여기서는 app: ngnix 레이블을 가진 파드를 선택한다.
  • template: 이 섹션은 Deployment가 생성할 파드의 스펙을 정의한다. metadata 에서는 파드에 적용될 레이블을 정의하고, spec에서는 파드에서 실행할 컨테이너를 정의한다. 

이 YAML 파일은 nginx 웹 서버를 실행하는 2개의 파드를 생성하고 관리하기 위한 Deployment를 정의한다. 

2. yaml 정보를 가지고 파드를 생성

kubectl apply -f nginx-deploy.yml
  • 이 명령어를 실행하여, nginx-deploy.yml 파일에 정의된 Deployment가 Kubernetes 클러스터에 적용되고 지정한 대로 파드가 생성된다. 
  • apply를 사용하여 현재 클러스터의 상태와 비교하여, 변경된 부분만 적용된다. 

3. 파드 확인

kubectl get pods
  • 현재 클러스터에 있는 모든 파드의 상태 정보를 출력한다. 파드가 정상적으로 실행되고 있는지, 상태는 어떤지를 확인할 수 있다.
  • 출력되는 정보에는 파드의 이름, 준비 상태(READY), 전체 인스턴스 수(STATUS), 재시작 수(RESTARTS), 생성된 시간(AGE) 등이 포함된다.

4. 모든 파드 삭제

kubectl delete pods --all
  • 현재 클러스태 내의 모든 파드가 삭제된다.
  • 파드가 삭제되면 해당 파드가 실행 중이던 컨테이너도 함께 종료된다. 

(실습)  결과

deployment를 이용해서 pods를 생성한 후 다시 삭제한 모습

 

위 실습에서 확인한 것과 같이, Deployments로 배포한 Replicas에 설정한 파드의 개수를 유지하려고 한다.

따라서 파드를 삭제하더라도, 자동으로 파드를 다시 생성해서 파드의 개수를 유지한다.

 

Deployment와 Pods의 차이점

Deployment는?

  • 애플리케이션의 상태를 관리하는 Kubernetes 객체로, 설정한 replicas 수에 맞춰 Pods를 생성하고 유지한다.
  • 만약 Deployment로 배포된 Pods가 삭제되거나 실패할 경우, Deployment는 자동으로 새로운 Pods를 생성하여 설정된 replicas 수를 유지한다.
  • 이를 통해 고가용성과 자동복구를 제공하며, 애플리케이션의 가용성을 보장한다.

Pod는?

  • Kubernetes에서 가장 작은 배포 단위로, 컨테이너를 실행하는 기본 객체이다.
  • Pods로 직접 생성한 경우, 해당 Pods가 삭제되면 자동으로 복구되지 않는다. 즉, 수동으로 다시 생성해야 하며, 상태가 유지되지 않는다.
  • Pods는 단기적이며 보통 일회성 작업이나 임시 작업에 사용된다. 
728x90
반응형