Cloud/Kubernetes

[따배쿠] 6-4,5. 쿠버네티스 DaemonSet! + RollingUpdate, StatefulSet

Tony Lim 2022. 2. 6. 15:36

DemonSet은 노드당 pod가 한개가 운영되는 것을 보장해준다. 처음에 노드가 2개 였을 때 1개가 더 추가되면 추가된 노드에도 pod를 1개 실행시켜준다.

주로 monitoring , log 와 관련된 pod 에 쓰인다. kubeproxy , CNI network 도 내부적으로는 Daemonset이 쓰인다.

 

kind 만 다르고 replicas는 항상 1임으로 명시하지 않는다.

해당 nginx version 을 1.15로 업그레이드 하고 저장하면 rolling update 가 이루어진다.

rollback 도 동일하게 이루어진다.

 

 

StatefulSet

중간에 node2의 1번 pod가 down 되면 node3에 이름이 1번 pod인 녀석을 실행시켜줄 수있다. daemonSet 처럼 노드당 1개의 pod를 보장해주는 것은 아니므로 아무 노드에 pod를 같은이름으로 생성하여 준다.

 

serviceName이라는 필드를 가지고 동작을 한다. 이름이 동일하더라도 실제 ip주소는 달라지기에 밖에서는 DNS로 똑같이 연결가능하게 추상화된 레이어가 존재한다.

 

OrderedReady == 차례대로 번호 매겨가며 3개의 pod를 실행시킨다.

Prallel == pod를 동시에 3개를 실행시킨다.

 

nginx-1 을 지우더라도 다시 1 이라는 이름으로 실행되는 것을 확인

 

1번이 2번째로 최신으로 태어난 pod이지만 statefulset에서는 scale down 할때 이름순으로 delete 한다.

rolling update , rollback 은 daemonset 처럼 ktubectl edit 명령어를 통해 version 을 바꾸거나 kubectl rollout undo 명령어를 쓰면된다.