DaemonSet이란?
<이미지 출처 : Kubernetes & Docker Part 2 >
- node당 pod가 1개씩 실행되도록 보장
- log 수입기, 모니터링 에이전트와 같은 프로그램 실행 시 적용
- definition
apiVersion: apps/v1
kind: DeamonSet # kind값과 replicas 유무의 차이 이외에는 ReplicaSet과 동일
metadata:
name: daemonset-nginx
spec:
selector:
matchLabels:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
[ Hands -on ]
1. daemonset 배포
vi daemonset-exam.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemonset-nginx
spec:
selector:
matchLabels:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
kubectl create -f daemonset-exam.yaml
- 배포 확인
kubectl get pods -o wide --watch
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
daemonset-nginx-fw229 1/1 Running 0 17s 192.168.11.66 node1.example.com <none> <none>
daemonset-nginx-z8qc6 1/1 Running 0 17s 192.168.221.2 node2.example.com <none> <none>
- worker node3을 조인하기 위한 현재 보유한 token 출력
kubeadm token list
⚠️ token이 없는 경우
kubeadm token create --print-join-command
- worker node3 조인
kubeadm join 10.100.0.104:6443 --token qf60rn.xhlt12aow3k9me56 --discovery-token-ca-cert-hash sha256:2780cd39d301a231c5da5be7d4273f66e29faa0614aeb654b21d4dafdb74e9a0
- worker node3 조인 후 daemonset에 의해 배포된 container 확인
kubectl get pods -o wide --watch
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
daemonset-nginx-fw229 1/1 Running 0 29m 192.168.11.66 node1.example.com <none> <none>
daemonset-nginx-l5m95 1/1 Running 0 32s 192.168.178.193 node3.example.com <none> <none>
daemonset-nginx-z8qc6 1/1 Running 0 29m 192.168.221.2 node2.example.com <none> <none>
- daemonset에 의해 배포된 container 중 하나 삭제 후 재생성 확인
kubectl delete pods daemonset-nginx-fw229
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
daemonset-nginx-6zlj8 1/1 Running 0 7s 192.168.11.67 node1.example.com <none> <none>
daemonset-nginx-l5m95 1/1 Running 0 4m5s 192.168.178.193 node3.example.com <none> <none>
daemonset-nginx-z8qc6 1/1 Running 0 32m 192.168.221.2 node2.example.com <none> <none>
2. Rolling update
- daemonset의 경우 edit 모드에서 이미지 버전 등을 변경할 경우 자동으로 rolling update 실시
kubectl edit daemonsets.apps daemonset-nginx
3. Roll back
kubectl rollout undo daemonset daemonset-nginx
참고 :
'INFRA > DevOps' 카테고리의 다른 글
[NGINX] Reverse Proxy (0) | 2022.10.11 |
---|---|
API Proxy (0) | 2022.10.11 |
[K8s] Deployment (1) | 2022.10.04 |
[K8s] ReplicationController & ReplicaSet (0) | 2022.09.26 |
[K8s] Pod에 Resource 할당(cpu/memory requests, limits) & K8s Pod 환경변수 설정과 실행 패턴 (0) | 2022.09.21 |
댓글