Kubernetes DaemonSet

uuuu.jini·2022년 9월 21일
0

Kubernetes

목록 보기
13/14

참고: [Kubernetes] 데몬셋


**DaemonSet은 모든 (혹은 몇몇의 지정된) Node들에 특정 Pod 한개를 유지시켜주는 Controller이다.

동작방식은 Node들이 Cluster내에 추가될 때, DaemonSet으로 정의된 Pod가 자동으로 생성된다. 반대로 Node가 Cluster내에서 삭제 되면, DaemonSet에 대한 Pod가 자동적으로 제거 된다.

보통 이런 특성 때문에 DaemonSet은 Cluster 내의 logging 및 자원 모니터링과 같은 곳에 효과적으로 사용될 수 있다.

Node가 신규로 Cluster내에 들어올 때 Monitoring과 같은 Container를 띄워서 내부 Pod들을 감시하도록 설계하는 것이다. 모든 노드의 Pod들을 모니터링하는 역할은 반드시 필욯다ㅏ.

데몬셋은 Node에 무조건적으로 있어야 하고 특수한 역할을 하는 Container에 대해서 적합하다.

데몬셋 스펙 작성


> 데몬셋 생성

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch # DaemonSet의 Name
  namespace: kube-system      # DaemonSet이 배포되는 namespace
  labels:
    k8s-app: fluentd-logging
spec:
  # DaemonSet이 관리해야할 Pod를 지정하는 Label selector입니다.
  # 아래의 Label과 Pod의 Lavel이 매칭되는 Pod가 관리대상입니다.
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      # Pod의 Lavel(위의 Lavel selector에 매칭됩니다.)
      labels:
        name: fluentd-elasticsearch
    # DaemonSet은 Pod를 관리하는 Object이므로 하위는 Pod의 Spec과 동일합니다.
    spec:
      tolerations: # tolerations에 해당되는 Node를 포함하여 스케쥴링합니다.
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      containers:
      - name: fluentd-elasticsearch
        image: k8s.gcr.io/fluentd-elasticsearch:1.20
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers
profile
멋쟁이 토마토

0개의 댓글