Deployment 를 이용한 Pod 확장 및 관리

KubernetesBeginner
지금 연습하기

소개

이 랩에서는 Kubernetes 에서 Deployment 를 사용하여 Pod 를 확장하고 관리하는 방법을 배우게 됩니다. Deployment 는 Pod 의 레플리카 세트를 선언적으로 관리하고 확장할 수 있도록 하는 상위 수준의 추상화입니다. Deployment 를 사용하면 애플리케이션을 새로운 버전으로 쉽게 업데이트하고, 이전 버전으로 롤백하며, 변화하는 수요에 맞춰 애플리케이션을 확장하거나 축소할 수 있습니다.

Minikube 클러스터 시작

리소스를 생성하기 전에 실행 중인 Kubernetes 클러스터가 필요합니다. Minikube 는 로컬 머신에서 실행되는 가벼운 Kubernetes 환경입니다.

  1. 작업 디렉토리로 이동:

    터미널을 열고 기본 프로젝트 폴더로 이동합니다.

    cd /home/labex/project
    
  2. Minikube 시작:

    Kubernetes 클러스터를 초기화하기 위해 Minikube 를 시작합니다.

    minikube start
    
    • 이 명령은 로컬 머신에 단일 노드 Kubernetes 클러스터를 설정합니다.
    • Minikube 는 시스템 성능에 따라 시작하는 데 몇 분 정도 걸릴 수 있습니다.
  3. Minikube 가 실행 중인지 확인:

    Minikube 클러스터의 상태를 확인합니다.

    minikube status
    
    • kubeletapiserver와 같은 구성 요소가 Running으로 나열되어 있는지 확인합니다.
    • 클러스터가 실행 중이지 않으면 minikube start를 다시 실행합니다.

Minikube 를 시작하는 데 문제가 발생하면 필요에 따라 minikube delete를 사용하여 환경을 재설정하십시오.

Deployment 생성

  1. /home/labex/project/에 다음 내용으로 my-deployment.yaml이라는 파일을 생성합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: nginx:latest
          ports:
            - containerPort: 80

이 YAML 파일은 Nginx 컨테이너를 실행하는 3 개의 레플리카를 가진 Deployment 를 정의합니다. selector 필드는 app 레이블을 기반으로 Deployment 가 제어하는 Pod 를 선택합니다.

  1. my-deployment Deployment 를 배포합니다.
kubectl apply -f my-deployment.yaml

이렇게 하면 my-deployment Deployment 와 관련된 ReplicaSet 및 Pod 가 생성됩니다.

  1. Deployment 가 생성되었는지 확인합니다.
kubectl get deployments

이렇게 하면 my-deployment Deployment 를 포함하여 클러스터의 Deployment 가 표시됩니다.

Deployment 스케일 조정

  1. my-deployment Deployment 를 5 개의 레플리카로 확장합니다.
kubectl scale deployment my-deployment --replicas=5

이렇게 하면 my-deployment Deployment 의 레플리카 수가 5 개로 증가합니다.

  1. Deployment 가 확장되었는지 확인합니다.
kubectl get deployments

이렇게 하면 5 개의 레플리카를 가진 my-deployment Deployment 를 포함하여 클러스터의 Deployment 가 표시됩니다.

Deployment 업데이트

  1. my-deployment Deployment 를 편집하여 nginx:1.19 이미지를 사용하도록 합니다.
kubectl edit deployment my-deployment

이렇게 하면 Deployment 가 기본 텍스트 편집기에서 열립니다. image 필드를 nginx:1.19로 변경하고 파일을 저장합니다.

  1. Deployment 가 업데이트되었는지 확인합니다.
kubectl rollout status deployment/my-deployment

이렇게 하면 my-deployment Deployment 의 최신 롤아웃 (rollout) 상태가 표시됩니다.

Deployment 롤백

  1. my-deployment Deployment 를 이전 버전으로 롤백합니다.
kubectl rollout undo deployment/my-deployment

이렇게 하면 my-deployment Deployment 가 이전 버전으로 롤백됩니다.

  1. Deployment 가 롤백되었는지 확인합니다.
kubectl rollout status deployment/my-deployment

이렇게 하면 my-deployment Deployment 의 최신 롤아웃 (rollout) 상태가 표시됩니다.

정리

  1. my-deployment Deployment 를 삭제합니다.
kubectl delete deployment my-deployment

이렇게 하면 my-deployment Deployment 와 관련된 ReplicaSet 및 Pod 가 삭제됩니다.

요약

이 랩에서는 Kubernetes 에서 Deployment 를 생성하고 관리하는 방법을 배웠습니다. 3 개의 레플리카를 가진 Deployment 를 생성하고, Deployment 를 5 개의 레플리카로 확장했으며, 다른 이미지를 사용하도록 Deployment 를 업데이트하고, Deployment 를 이전 버전으로 롤백했습니다.