DaemonSet 으로 Pod 실행하기

KubernetesBeginner
지금 연습하기

소개

Kubernetes 에서 DaemonSet 은 클러스터의 모든 노드에서 Pod 의 복제본이 실행되도록 보장하는 컨트롤러 유형입니다. 이 랩에서는 클러스터의 모든 노드에서 Pod 의 복제본을 실행하기 위해 DaemonSet 을 생성하는 과정을 안내합니다.

Minikube 클러스터 시작

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

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

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

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

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

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

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

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

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

Pod 생성

복제본의 템플릿으로 사용될 간단한 Pod 를 생성합니다. /home/labex/project/myapp-pod.yaml이라는 파일을 다음 내용으로 생성합니다.

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
    - name: myapp-container
      image: nginx
      ports:
        - containerPort: 80

다음 명령을 사용하여 Pod 를 생성합니다.

kubectl apply -f /home/labex/project/myapp-pod.yaml

DaemonSet 생성

클러스터의 모든 노드에서 myapp-pod의 복제본을 실행하기 위해 DaemonSet 을 생성합니다. /home/labex/project/myapp-daemonset.yaml이라는 파일을 다음 내용으로 생성합니다.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-daemonset
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: nginx
          ports:
            - containerPort: 80

이 DaemonSet 은 myapp-pod를 복제본의 템플릿으로 사용하고, matchLabels 선택기를 app: myapp로 설정하여 모든 노드에 복제본이 생성되도록 합니다.

다음 명령을 사용하여 DaemonSet 을 생성합니다.

kubectl apply -f /home/labex/project/myapp-daemonset.yaml

DaemonSet 검증

DaemonSet 이 생성되었고 myapp-pod의 복제본이 모든 노드에서 실행 중인지 확인합니다. 다음 명령을 사용하여 클러스터의 노드를 나열합니다.

kubectl get nodes

다음 명령을 사용하여 DaemonSet 에 의해 생성된 Pod 를 나열합니다.

kubectl get pods -l app=myapp

클러스터의 각 노드에 대해 하나의 Pod 가 표시되어야 합니다.

DaemonSet 업데이트

myapp-container에서 사용되는 이미지를 변경하기 위해 DaemonSet 을 업데이트합니다. /home/labex/project/myapp-daemonsett-update.yaml 파일을 생성하고 다음 내용을 입력합니다.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-daemonset
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: busybox
          command: ["sleep", "3600"]

이 업데이트된 DaemonSet 은 myapp-container에서 사용되는 이미지를 busybox로 변경하고 명령을 sleep 3600으로 설정합니다.

다음 명령을 사용하여 DaemonSet 을 업데이트합니다.

kubectl apply -f /home/labex/project/myapp-daemonset-update.yaml

DaemonSet 이 업데이트되었고 myapp-pod의 복제본이 새 이미지로 실행 중인지 확인합니다. 다음 명령을 사용하여 DaemonSet 에 의해 생성된 Pod 를 나열합니다.

kubectl get pods -l app=myapp

업데이트된 이미지로 생성된 새 Pod 가 표시되어야 합니다.

요약

이 랩에서는 Kubernetes 에서 DaemonSet 을 사용하여 클러스터의 모든 노드에서 Pod 의 복제본을 실행하는 방법을 배웠습니다.