레플리케이션컨트롤러와 레플리카셋은 모두 쿠버네티스의 특정위치에 배포된 특정 개수의 포드를 실행하는데 사용
클러스터의 각 노드에서 포드를 실행해야 하는 경우 데몬셋을 사용
[데몬셋을 사용해 모든 노드에서 포드 실행]
- 모든 클러스터 노드에서 포드를 실행하려면 데몬셋 객체를 만든다.
- 이 객체는 레플리케이션컨트롤러 또는 레플리카셋과 비슷
- 단, 데몬셋에 의해 만들어진 포드는 이미 대상 노드가 지정돼 있고 쿠버네티스 스케줄러는 건너뛴다.
- 노드가 다운되도 데몬셋은 어느곳에서도 포드를 생성하지 않는다. 그러나 새 노드가 클러스터에 추가되면 데몬셋은 즉시 새 포드 인스턴스를 배포한다.
[데몬셋을 사용해 특정 노드에서 포드를 실행]
- 포드가 모든 노드의 일부에만 실행하도록 지정하지 않는 한, 데몬셋은 클러스터의 모든 노드에 포드를 배포
- 데몬셋 정의의 일부인 포드 템플릿에서 node-Selector 속성을 지정
[데몬셋 YAML 정의 만들기]
ssd-monitor-daemonset.yaml
apiVersion: app/v1beta2 #데몬셋은 apps API 그룹의 버전 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
[데몬셋 만들기]
$ kuebctl create -f ssd-monitor-daemonset.yaml
[생성된 데몬셋 보기]
$ kubectl get ds
[필요한 라벨을 노드에 추가]
$ kubectl label node minikube disk=ssd
node "minikube" labeled
[pod 상태 보기]
$ kubectl get po
[라벨을 노드에서 변경]
$ kubectl label node minikube disk=hdd ?overwirte
node "minikube" labeled
'Kubenetes > Kubernetes Pods' 카테고리의 다른 글
Pod의 Lifecycle (0) | 2021.03.07 |
---|---|
Readiness Probe - Pod가 연결을 수락할 준비가 됐을 때 신호 보내기 (0) | 2021.02.22 |
라이브니스 프로브 (Liveness Probe) (0) | 2021.02.10 |
Pod 4 - (Namespace) (0) | 2021.02.10 |
Pod 3 - (Label을 이용한 Pod 구성) (0) | 2021.02.10 |