728x90
반응형
SMALL
-전체 노드에서 pod가 한 개씩 실행되도록 보장
-로그 수입기 , 모니털이 에이전트와 같은 프로그램 실행 시 적용
master에서 node1,2가 있을때 node3을 추가로 join 시키면 node3에서도 자동으로 생성됩니다.
rs-nginx.yaml | daemonset-exam.yaml |
apiVersion: apps/v1 kind: ReplicaSet metadata: name: rs-nginx spec: replicas: 3 selector: matchLabels: app: webui template: metadata: name: nginx-pod labels: app: webui spec: containers: - name: nginx-container image: nginx:1.14 |
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 |
저같은 경우 master , node1 ,node2 로 구성되어 있어 사전에 node2를 join에서 빼고 진행하겠습니다.
Every 2.0s: kubectl get node master: Mon Sep 11 13:48:51 2023 NAME STATUS ROLES AGE VERSION master Ready control-plane 6d21h v1.28.1 worker1 Ready 6d21h v1.28.1 worker2 Ready 23m v1.28.1 |
# kubectl delete nodes worker2 확인시 node1 만 남았습니다. Every 2.0s: kubectl get node master: Mon Sep 11 13:19:05 2023 NAME STATUS ROLES AGE VERSION master Ready control-plane 6d21h v1.28.1 worker1 Ready 6d20h v1.28.1 |
이제 pod를 생성해보겠습니다.
# 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 |
worker(node)가 한대라 한개만 생성
# kubectl get pods NAME READY STATUS RESTARTS AGE daemonset-nginx-2x466 1/1 Running 0 93s |
이 node2(worker2)를 다시 join 하기 위해서 master 에서 koken 값을 확인합니다. 보통 처음에 생성하고 나면 유효기간에 따라 다르지만 보통 재생성 해야합니다.
# kubeadm token list <비어있음> # kubeadm token create --ttl 1h (시간 선택가능) bc18ff.8n8ys8vu6y91pgah |
node2 에서 작업합니다.
이미 한번 붙었던 node라서 한번 reset 해줍니다.
# kubeadm reset # kubeadm join 10.101.0.21:6443 --token bc18ff.8n8ys8vu6y91pgah --discovery-token-ca-cert-hash sha256:911e6e3f8df09927a3babd6cf8576ebc11a739d24474e80d4ff01746c20f73ff |
master 로 돌아옵니다.
Every 2.0s: kubectl get node master: Mon Sep 11 13:25:42 2023 NAME STATUS ROLES AGE VERSION master Ready control-plane 6d21h v1.28.1 worker1 Ready 6d20h v1.28.1 worker2 Ready 6s v1.28.1 << worker2가 다시 붙었습니다. |
# kubectl get pods NAME READY STATUS RESTARTS AGE daemonset-nginx-2x466 1/1 Running 0 5m33s daemonset-nginx-8rrjn 1/1 Running 0 29s <<< worker2가 붙어서 pod도 자동생성 되었습니다. |
파드를 지워보겠습니다.
# kubectl delete pod daemonset-nginx-8rrjn pod "daemonset-nginx-8rrjn" deleted Every 2.0s: kubectl get pods master: Mon Sep 11 13:26:57 2023 NAME READY STATUS RESTARTS AGE daemonset-nginx-2x466 1/1 Running 0 6m23s daemonset-nginx-hr4hs 1/1 Running 0 8s <<< 지워도 바로 생성됩니다 . |
이번에는 롤링 업데이트를 해보겠습니다 .
# kubectl get ds NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset-nginx 2 2 2 2 2 7m13s |
# kubectl edit ds daemonset-nginx daemonset.apps/daemonset-nginx edited image 부분을 찾아 nginx 1.14 에서 1.15 로 변경 :wq 하고 나가면 자동 변경 |
변환 단계 Every 2.0s: kubectl get pods -o wide master: Mon Sep 11 13:29:38 2023 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES daemonset-nginx-2x466 1/1 Terminating 0 9m4s 10.101.1.115 worker1 daemonset-nginx-hr4hs 1/1 Running 0 2m49s 10.101.1.131 worker2 Every 2.0s: kubectl get pods -o wide master: Mon Sep 11 13:29:43 2023 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES daemonset-nginx-65dsc 1/1 Running 0 4s 10.101.1.116 worker1 daemonset-nginx-m8xj7 0/1 ContainerCreating 0 1s worker2 # kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES daemonset-nginx-65dsc 1/1 Running 0 17s 10.101.1.116 worker1 daemonset-nginx-m8xj7 1/1 Running 0 14s 10.101.1.132 worker2 |
# kubectl describe pod ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 5m44s default-scheduler Successfully assigned vittorio/daemonset-nginx-m8xj7 to worker2 Normal Pulled 5m43s kubelet Container image "nginx:1.15" already present on machine ... |
이제는 업데이트한 버전을 다시 undo 명령어로 롤백 해보겠습니다.
# kubectl rollout undo daemonset daemonset-nginx daemonset.apps/daemonset-nginx rolled back # kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES daemonset-nginx-65dsc 1/1 Running 0 6m54s 10.101.1.116 worker1 <none> <none> daemonset-nginx-xsdw6 0/1 ContainerCreating 0 2s <none> worker2 <none> <none> # kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES daemonset-nginx-2whz6 0/1 Pending 0 0s <none> worker1 <none> <none> daemonset-nginx-65dsc 0/1 Terminating 0 6m55s <none> worker1 <none> <none> daemonset-nginx-xsdw6 1/1 Running 0 3s 10.101.1.133 worker2 <none> <none> # kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES daemonset-nginx-2whz6 0/1 ContainerCreating 0 1s <none> worker1 <none> <none> daemonset-nginx-xsdw6 1/1 Running 0 4s 10.101.1.133 worker2 <none> <none> # kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES daemonset-nginx-2whz6 1/1 Running 0 6s 10.101.1.117 worker1 <none> <none> daemonset-nginx-xsdw6 1/1 Running 0 9s 10.101.1.133 worker2 <none> <none> # kubectl describe pod 명령어로 확인시 1.14로 돌아온것을 확인할수 있습니다. |
삭제하고 나가쟈 ~
# kubectl delete ds daemonset-nginx daemonset.apps "daemonset-nginx" deleted |
728x90
반응형
LIST
'Linux&Ubuntu > Docker&kuber' 카테고리의 다른 글
job controller 사용하기 (0) | 2023.09.13 |
---|---|
StatefulSet 사용하기 (0) | 2023.09.11 |
Deloyment 사용하기 (0) | 2023.09.08 |
ReplicaSet 사용하기 (0) | 2023.09.08 |
controller종류와 Replication controller (0) | 2023.09.07 |