기본 DaemonSet 만들기
기본 DaemonSet 만들기
이 페이지에서는 쿠버네티스 클러스터의 모든 노드에서 파드를 실행하는 기본 DaemonSet을 만드는 방법을 함께 살펴봐요. 호스트에서 파일을 마운트하고, 그 내용을 init 컨테이너로 읽어 로그로 남기고, pause 컨테이너로 파드를 유지하는 간단한 예시를 다룹니다.
출처: 문서
본문
시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 설정돼 있어야 해요. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 최소 두 개 이상인 클러스터에서 실행하는 것을 권장합니다. 클러스터가 없다면 minikube로 만들거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있어요:
DaemonSet의 동작을 확인하려면 노드가 최소 두 개(컨트롤 플레인 노드 하나와 워커 노드 하나)인 클러스터가 있어야 해요.
DaemonSet 정의하기
이 작업에서는 모든 노드에 파드 사본 하나가 스케줄되도록 보장하는 기본 DaemonSet을 만들어요. 파드는 init 컨테이너를 사용해 호스트의 /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
정리하기
DaemonSet을 삭제하려면 다음 명령을 실행해요:
kubectl delete --cascade=foreground --ignore-not-found --now daemonsets/example-daemonset
이 간단한 DaemonSet 예시는 init 컨테이너와 호스트 경로 볼륨 같은 핵심 구성 요소를 소개하고 있어요. 이를 확장하면 더 복잡한 사용 사례를 다룰 수 있습니다. 자세한 내용은 DaemonSet 문서를 참고하세요.