08. DaemonSet
2021. 4. 5. 13:50ㆍ🎯 OpenSource/K8S
DaemonSet을 사용하여 모든 클러스터 노드마다 pod를 하나씩 올릴 수 있다.
예를 들어 모든 node에서 동일하게 log 수집기를 구동 시켜야 하는 경우 DaemonSet을 이용하여 배포하게 된다.
4.4.1 DaemonSet으로 모든 node에 pod 실행하기
DaemonSet으로 생성되는 pod는 올라갈 노드가 이미 지정되어 있어 무작위로 배포되지 않는다.
- node자체가 다운될 경우 DaemonSet으 다른 node에 pod를 생성하지 않음
- 새로운 node가 클러스터에 추가될 경우 해당 노드에 새로운 pod생성함
4.4.2 DaemonSet 사용하여 특정 node에 pod실행하기
따로 설정하지 않으면 DaemonSet은 클러스터의 모든 node에 pod를 배포한다.
특정 노드를 지정하기 위해서는 node-Selector 속성을 이용한다.
* DaemonSet으로 배포하는 pod는 스케줄링이 disable 되어있는 node에도 배포된다.
🔹 DaemonSet YAML 정의
다음은 5초 간격으로 "SSD OK"를 출력하는 모의 ssd-monitor 구동을 위한 daemonset이다.
ssd 레이블이 있는 node에 한해 pod를 하나씩 올리게 된다.
apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
name: ssd-monitor
spec:
selector:
matchLabels:
app: ssd-monitor
template:
metadata:
labels:
app: ssd-monitor
spec:
nodeSelector:
disk: ssd
containers:
- name: main
image: luksa/ssd-monitor
ssd 정보를 가진 node를 확인한다.
root@master001:~/k8s_in_action/kubernetes-in-action/Chapter04# kubectl get node -L disk
NAME STATUS ROLES AGE VERSION DISK
master001 Ready control-plane,master 34d v1.20.4
worker001 Ready <none> 34d v1.20.4 ssd
worker002 Ready <none> 34d v1.20.4
DaemonSet으로 ssd label 값이 있는 worker001에만 pod가 올라갔다.
root@master001:~/k8s_in_action/kubernetes-in-action/Chapter04# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ssd-monitor-5q9w7 1/1 Running 0 39s 172.30.65.108 worker001 <none> <none>
'🎯 OpenSource > K8S' 카테고리의 다른 글
10. ConfigMap (0) | 2021.05.08 |
---|---|
09. Job으로 완료 가능한 단일 task 구현하기 (0) | 2021.04.05 |
07. ReplicaSet (0) | 2021.04.05 |
06. liveness probe (0) | 2021.04.05 |
05. Pod 중지, 제거 (0) | 2021.04.04 |