• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

daemon set replicas

21.12.25 11:59 작성 조회수 171

1

안녕하세요.

daemonset 관련 질문드립니다.

daemonset의 경우는 node 당 하나씩 pod가 생성되는 것으로 이해했고, 만일 node당 하나씩 pod를 생성하지 않고 n개의 replica를 생성하고 싶은 경우, deployment 등으로 생성해야한다고 생각하였습니다.

그런데, daemonset은 주사용 용도가 logstash나 node exporter같은 node의 상태나 log를 관리하는 용도로 사용되는 것 같은데 이때에 daemonset으로 생성된 pod가 down되면 재기동되는데까지 해당 서비스(logging, monitoring)의 downtime이 발생하지 않을까 우려됩니다.

이런것을 방지하고 싶은 요구가 있을때에는 daemonset을 사용하지 않아야할까요? 혹은 다른 방법이 있을까요?

답변 1

답변을 작성해보세요.

1

안녕하세요. 

쿠버네티스에서 가장 힘든 부분이 사용되는 오브젝트들에 대한 올바른 사용 방법입니다.

말씀하신 것처럼 각각의 오브젝트들마다 뭔가 부족해보이는 기능들이 있는것 같고, 그래서 다른 오브젝트를 사용하고 싶은 충동이 생길 수 있어요 ㅎ

하지만 최대한 쓰라는거 써야합니다^^

logging의 예로, logstash는 각각 워커노드에서 Docker가 수집한 Log File을  읽어서 수집서버로 보내죠. (아키텍쳐 Logging 강의참조)

이때 DaemonSet 으로 설치된 파드가 죽으면, 그 순간 실시간 로그는 쌓지 못할 수 있지만, 마지막까지 Push를 보내는 offset을 알고 있기 때문에, 다시 살아났을때 그 시점부터 로그를 보내줘요. (logstash가 이렇게 작동하는지는 확인해보지 못했지만 보통 로그수집 agent에 있는 기능입니다)

이렇듯 각각의 쿠버네티스 네이티브한 app들은 기능적으로 Pod가 죽을 수 있는 상황에 대한 대처를 해줍니다. 

근데 만약 logstash를 Deployment로 설치 한다고 생각했을땐, 개념적으로 Pod가 죽어도 Replica가 있으니까 기능적으로 문제 없다고 생각할 수 있는데, 아키텍쳐 Logging  강의를 보셨다면, DeamonSet의 역할은 하는 App들을 Deployment로 사용하면 아키텍쳐적으로 해당 App의 기능이 정상적으로 작동  안되요.

결론적으로, 큰 개념에 마춰서 그 개념과 아키텍쳐에 맞는 App을 써야하며, 서비스적인 부가적인 문제들은 App 자체의 기능적으로 풀어야하는 부분입니다. 해당 App마다 제품 사이트에가서 이런 저런 상황에 대처할 수 있는 기능을 찾아봐야 되는거죠.

감사합니다.

김은종님의 프로필

김은종

질문자

2021.12.29

친절한 답변 감사드립니다. 궁금하던 부분이 해결되었습니다 ^^