데몬셋
DaemonSet는 노드에 1개씩 POD가 배포되는 워크로드이다.
RC나 RS에 의해서 관리되는 Pod 는 여러 노드의 상황에 따라서 일반적으로 비균등적으로 배포가 되지만, DS에 의해 관리되는 Pod는 모든 노드에 균등하게 하나씩만 배포 된다. 이런 형태의 워크로드는 서버의 모니터링이나 로그 수집 용도로 많이 사용되는데, DS의 다른 특징중 하나는, 특정 Node들에만 Pod가 하나씩만 배포 되도록 설정이 가능하다. 앞에서 언급한 로그나 모니터링 시나리오에서 특정 장비에 대한 모니터링을 하고자 할 때 이런 시나리오가 유효하다. 예를 들어 특정 장비(노드)에만 Nvme SSD를 사용하거나 GPU를 사용할 경우에는 그 장비가 설치된 노드만을 모니터링하면 된다. 출처: https://bcho.tistory.com/1257?category=731548 [조대협의 블로그] |
DaemonSet의 몇 가지 일반적인 용도는 다음과 같습니다.
- 모든 노드에서 클러스터 스토리지 데몬 실행
- 모든 노드에서 로그 수집 데몬 실행
- 모든 노드에서 노드 모니터링 데몬 실행
DaemonSet 사양 작성
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
namespace: kube-system
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
tolerations:
# this toleration is to have the daemonset runnable on master nodes
# remove it if your masters can't run pods
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
containers:
- name: fluentd-elasticsearch
image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
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
'컨테이너 > Kubernetes' 카테고리의 다른 글
[Kubernetes] (18). Application Lifecycle Management (0) | 2021.09.01 |
---|---|
[Kubernetes] (16). Static Pods (0) | 2021.08.31 |
[Kubernetes] (15). Node Affinity / Pod Affinity (0) | 2021.08.30 |
[Kubernetes] (14) Taints and Tolerations (0) | 2021.08.30 |
[Kubernetes] (13) Lables & Selectors (0) | 2021.08.29 |