소개
Kubernetes에서 DaemonSet은 클러스터의 모든 노드에서 Pod의 복제본이 하나씩 실행되도록 보장하는 컨트롤러 유형입니다. 이번 실습에서는 클러스터의 모든 노드에서 Pod 복제본을 실행하기 위한 DaemonSet을 생성하는 과정을 안내합니다.
Minikube 클러스터 시작하기
리소스를 생성하기 전에 실행 중인 Kubernetes 클러스터가 필요합니다. Minikube는 로컬 머신에서 실행되는 경량 Kubernetes 환경입니다.
작업 디렉토리로 이동:
터미널을 열고 기본 프로젝트 폴더로 이동합니다:
cd /home/labex/projectMinikube 시작:
Kubernetes 클러스터를 초기화하기 위해 Minikube를 시작합니다:
minikube start- 이 명령어는 로컬 머신에 단일 노드 Kubernetes 클러스터를 설정합니다.
- 시스템 성능에 따라 Minikube가 시작되는 데 몇 분 정도 걸릴 수 있습니다.
Minikube 실행 상태 확인:
Minikube 클러스터의 상태를 확인합니다:
minikube statuskubelet및apiserver와 같은 구성 요소가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-daemonset-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 복제본을 실행하는 방법을 배웠습니다.


