Kubernetes集群可视化
Kubermetrics 是一个开源工具,它以简单易懂的用户界面提供 Kubernetes 集群监控和数据可视化。Kubermetrics 集成了 Prometheus 和 Grafana 仪表板在一个页面,允许定制仪表板和警报。
- Kubermetrics Dockerhub
- Kubermetrics Github
主页
按 namespace 显示所有 nodes, deployments, pods, services 和 ingresses 的仪表板。
指标页
指标页面利用了完整的 Grafana 集成定制仪表板。告警页
警报页利用完整的 Prometheus 集成,以便访问警报,图表,prom-queries等!部署 Kubermetrics
如果未安装 Prometheus 和 Grafana,可以在 kubermetrics 根目录下执行apply,将安装全部依赖组件:git clone https://github.com/oslabs-beta/kubermetrics.git
unzip kubermetrics.zip
如果已安装 Prometheus 和 Grafana,则进入manifests目录,apply清单 yaml 文件:kubectl apply -f manifests
创建的 Pod 一直重启,查看日志报错如下: ```bash# cd kubermetrics/manifests
# kubectl apply -f kubermetrics-depl.yaml
deployment.apps/kubermetrics-depl created
service/kubermetrics-srv created
kubectl get pod | grep kuberme
kubermetrics-depl-5c54969bc-w4nnt 0/1 CrashLoopBackOff 1 88s
k logs -f kubermetrics-depl-5c54969bc-w4nnt
standard_init_linux.go:211: exec user process caused “exec format error”
这个问题在 github 上有相同的[issue](https://github.com/oslabs-beta/kubermetrics/issues/30),目前尚未解决。
```bash
# docker run -ti kubermetrics/kubermetrics:latest bash
standard_init_linux.go:211: exec user process caused "exec format error"
# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
# uname -m
x86_64
该错误 CPU 架构不同导致的,默认镜像适用于linux/arm64。
为此编译了 x86 架构的镜像,推送到阿里云镜像仓库和 dockerhub 仓库:
# 阿里云仓库
docker pull registry.cn-hangzhou.aliyuncs.com/smallsoup/kubermetrics
# dockerhub
docker pull smallsoup/kubermetrics
请运行以下命令以确保 grafana 和 prometheus 在这些端口上启动并运行!
kubectl port-forward <grafana-pod-name-goes-here> --namespace=<yournamespace> 3000:3000
kubectl port-forward <prometheus-pod-name-goes-here> --namespace=<yournamespace> 9090:9090
找到您当前正在运行的 Kubermetrics Pod 并运行以下命令
# kubectl port-forward --address 0.0.0.0 pod/{pod名称} 8899:3068
Forwarding from 0.0.0.0:8899 -> 3068
Handling connection for 8899
这将在本机所有地址监听 8899 端口,转发到 Pod 的 3068 端口。
假如本机 IP 为10.0.11.2,则访问10.0.11.2:8899即可访问仪表板。
比较坑的是
应用程序在本地主机 localhost:3000 上查找 grafana,9090 上查找 promethues。不支持自定义。
Prometheus 的地址是写死:
./client/components/PrometheusMonitoring/PrometheusAlerts.js: src={"http://localhost:9090/alerts"}
Grafana 的地址是写死:
./client/components/GrafanaMonitoring/ClusterDashboard.js: src={"http://localhost:3000/goto/tJaUhdH7z?orgId=1"}
./client/components/GrafanaMonitoring/PodDashboard.js: src={"http://localhost:3000/d-solo/AAOMjeHmk/kubernetes-pod-monitoring?orgId=1&refresh=10s&from=1632155279207&to=1632158879207&panelId=3"}
./client/components/GrafanaMonitoring/PodDashboard.js: src={"http://localhost:3000/d-solo/AAOMjeHmk/kubernetes-pod-monitoring?orgId=1&refresh=10s&from=1632156042391&to=1632159642391&panelId=2"}
./client/components/GrafanaMonitoring/PodDashboard.js: src={"http://localhost:3000/d-solo/AAOMjeHmk/kubernetes-pod-monitoring?orgId=1&refresh=10s&from=1632156127873&to=1632159727873&panelId=8"}
参考资料
Kubermetrics Dockerhub: https://hub.docker.com/r/kubermetrics/kubermetrics
Kubermetrics Github: https://github.com/oslabs-beta/kubermetrics
issue: https://github.com/oslabs-beta/kubermetrics/issues/30