기본 데몬셋(DaemonSet) 생성하기
이 페이지는 쿠버네티스 클러스터의 모든 노드에서 파드를 실행하는 기본 데몬셋을
만드는 방법을 보여준다.
호스트로부터 파일을 마운트하고, 초기화 컨테이너를 사용해
그 내용을 로그로 남기며, pause 컨테이너를 이용하는 간단한 사용 사례를 다룬다.
시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고 있지 않다면, minikube를 사용해서 생성하거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.
데몬셋의 동작을 보여주기 위해서는 최소 두 개의 노드(하나의 컨트롤 플레인 노드와 하나의 워커 노드)를 가진 쿠버네티스 클러스터가 필요하다.
데몬셋 정의하기
이 태스크에서는 기본 데몬셋을 생성하여 클러스터의 모든 노드에 파드가 하나씩 스케줄되도록 한다.
파드는 초기화 컨테이너를 이용해 호스트의 /etc/machine-id
내용을 읽어 로그에 남기고,
메인 컨테이너는 파드를 실행 상태로 유지하는 pause
컨테이너가 된다.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: example-daemonset
spec:
selector:
matchLabels:
app.kubernetes.io/name: example
template:
metadata:
labels:
app.kubernetes.io/name: example
spec:
containers:
- name: pause
image: registry.k8s.io/pause
initContainers:
- name: log-machine-id
image: busybox:1.37
command: ['sh', '-c', 'cat /etc/machine-id > /var/log/machine-id.log']
volumeMounts:
- name: machine-id
mountPath: /etc/machine-id
readOnly: true
- name: log-dir
mountPath: /var/log
volumes:
- name: machine-id
hostPath:
path: /etc/machine-id
type: File
- name: log-dir
hostPath:
path: /var/log
-
(YAML) 매니페스트를 기반으로 데몬셋을 생성한다.
kubectl apply -f https://k8s.io/examples/application/basic-daemonset.yaml
-
적용 후, 클러스터의 모든 노드에서 데몬셋이 파드를 실행 중인지 확인할 수 있다.
kubectl get pods -o wide
출력은 다음과 같이 노드별로 하나의 파드를 보여줄 것이다.
NAME READY STATUS RESTARTS AGE IP NODE example-daemonset-xxxxx 1/1 Running 0 5m x.x.x.x node-1 example-daemonset-yyyyy 1/1 Running 0 5m x.x.x.x node-2
-
호스트에서 마운트한 로그 디렉터리를 확인하여 로그에 기록된
/etc/machine-id
파일의 내용을 볼 수 있다.kubectl exec <pod-name> -- cat /var/log/machine-id.log
<pod-name>
은 사용자의 파드 중 하나의 이름이다.
정리하기
데몬셋을 삭제하려면, 다음 명령어를 실행한다.
kubectl delete --cascade=foreground --ignore-not-found --now daemonsets/example-daemonset
이 간단한 데몬셋 예제는 초기화 컨테이너와 호스트 패스(host path) 볼륨 같은 핵심 컴포넌트를 소개하며, 더 고급 사용 사례로 확장할 수 있다. 더 자세한 내용은 데몬셋을 참고하자.
다음 내용
- 데몬셋(DaemonSet)에서 롤링 업데이트 수행을 참고한다.
- 기존 데몬셋 파드를 인계받기 위한 데몬셋 생성을 참고한다.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.