Kubernetes

Shared Informer

토마스.dev 2019. 12. 11. 11:08

사실 Shared Informer에 대한 자료는 구글링을 하면 널리고 널렸다. 

다만 필자는 이것을 이해하기전, Shared라는 키워드에 대한 썰을 풀어보고자 한다(필자와 같은 사람이 있을 수도 있겠다는 가정아래)

https://medium.com/@muhammet.arslan/write-your-own-kubernetes-controller-with-informers-9920e8ab6f84

 

Write your own kubernetes controller with informers

In applications of robotics and automation, a control loop is a non-terminating loop that regulates the state of the system. In Kubernetes…

medium.com

https://gianarb.it/blog/kubernetes-shared-informer

불러오는 중입니다...

Shared Informer에 붙은 Shared는 Cache기법을 말하는 것이다. 처음에는 API server의 부하를 줄인다고 해서 여러가지 분리된 컨트롤러들이 공통으로 접근하는걸 생각했는데 완전히 바보같은 생각이었다.

여기서 Shared란 하나의 앱 안에 여러가지 컨트롤러 들이 있고 이것이 하나의 리소스 변화를 바라 봤을때 공용으로 사용할 수 있게 하겠다는 것이다. 즉 Reflector라는 모듈이 API Server에 Request를 날리고(1번) 이것을 key-value(object) 스토어(Index)에 저장하고 이것을 watching하는 컨트롤러들에게 notification을 주는 것이다. 

하나의 컨트롤러만 사용할때 Shared라는게 무슨 의미가 있을까 생각하게 되는데, 맞다 의미 없다. 다만 알다시피 kube-controller-manager에는 다수의 컨트롤러가 들어가 있다. 이럴 때는 의미가 있다.

참고로 이것을 사용하는 관련 샘플코드들을 찾아보면 SharedInformer, SharedIndexInformer 등을 사용하는데, 둘이 같다고 보면된다(Index 가 변경이 일어나면 inform을 주겠다는 의미)

https://github.com/kubernetes/client-go/blob/master/tools/cache/shared_informer.go#L163

 

 

 

 

'Kubernetes' 카테고리의 다른 글

CustomResource Version Converting 과정 분석  (0) 2021.09.15
CKA 후기  (0) 2021.03.27
nginx reload와 keep-alive (부제: zero-downtime은 사기일까?)  (1) 2021.01.16
Git Flow 와 CI/CD  (0) 2020.03.19