Show GN: KuView: 웹기반 실시간 쿠버네티스 대시보드
(github.com/iwanhae)저는 개인적으로 쿠버네티스를 꽤 좋아하는 편 입니다만, 그래도 몇가지 아쉬운점이 있다면 추상화가 너무 잘 된 나머지 실제 물리적인 요소들이 감춰져 확인하기가 어렵다는 점 입니다.
예를들면
- 어떤 Pod 에 장애가 나고 있는 상황에서 같은 노드에 배포된 다른 Pod 들의 상태는 어떤가
- 현재 Service 에 연결된 Pod 들은 전부 정상적으로 작동하고 있는가?
- 현재 노드의 CPU, Memory 사용량은 어떻게 되는가? 그 중 개별 Pod 들의 비중은 어떻게 되는가?
- 현재 노드에 연결된 PV 들의 리스트는?
물론 정보가 아주 없는건 아니라서, 하나하나 kubectl 조합과 Prometheus 등의 모니터링 툴을 통해서 시각화 하는 방법이 있긴 합니다만 상당히 번거로운것도 사실입니다.
그런 상황에 도움이 되고자 적당히 하나 만들어본 웹기반 실시간 쿠버네티스 대시보드 입니다. 별도로 무언가 설치 할 필요없이 kubectl proxy
명령어만 사용 가능하면 WASM 형태로 웹브라우져 안에서 Kubernetes 의 모든 리소스를 WATCH 하는 형태로 작동합니다.
Running / Terminating 숫자가 1초도 아니고 0.00x초 단위로 변경되는것같은데 어떤 원리로 계속 변경되는 걸까요? 계속 k8s API를 찌르는걸까요?
사용하고 싶은데, k8s API Read Request에 엄청난 부하를 주는 것은 아닌지 걱정이 살짝 되어서 물어봐봅니다!
K8s 의 WATCH API 를 사용합니다.
https://kubernetes.io/docs/reference/…
변경사항만 protobuf, SSE 로 받아오는건지라 꽤 효율적이고 부하는 미미한 수준입니다. (kubelet 이 kube apiserver 에 가하는 정도의 부하 수준입니다)
다만 여러명이 동시에 사용하는거면 wasm 보다는 서버모드를 추천합니다. 서버가 대신해서 요청 받아와 인메모리에 들고있는걸 주는건지라 kube apiserver 부하가 적어집니다.
크기가 크긴한데 엔트로피가 높은것 같지는 않습니다. 현재 curl 로 다운받을때 gzip 된게 용량이 14MB 정도밖에 안됩니다. 실제 WASM 을 서빙할때도 요즘 웬만해서는 gzip, zstd, brotoli 같은 인코딩 알고리즘들이 적용되는데 실제 전송되는 트래픽은 높지 않을것으로 예상되긴 합니다.