기본 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 문서를 참고하세요.

더 알아보기 (Learn more)