一键部署 Kubernetes Dashboard并集成Heapster、InfluxDB和Grafana

一键部署Kubernetes Dashboard

在Kubernetes 1.7后,Kubernetes Dashboard的授权方式发生了很大变化,网络上查到的一些中文资料已经过时了。

根据自己的亲身实践,写了一键部署Kubernetes Dashboard脚本。

特点:

  • 一键部署,避免踩坑
  • 采用Kubernetes推荐的安装方法和访问方法
  • 使用阿里云镜像仓库避免拉取不了gcr.io镜像问题
  • 支持Kubernetes Dashboard v1.8.3
  • 集成了Heapster v1.5.3、InfluxDB v1.3.3和Grafana v4.4.3
  • 不需要修改API Server配置文件

    注意:官方文档中的heapster-grafana-amd64:v5.0.4和heapster-influxdb-amd64:v1.5.2在gcr.io官方镜像仓库中并不存在,需要降级为heapster-grafana-amd64:v4.4.3和heapster-influxdb-amd64:v1.3.3。

安装步骤

克隆或复制 k8s_dashboard 目录到K8S master上,运行以下命令:

chmod u+x *.sh
./deploy_k8s_dashboard.sh

安装脚本会生成一个Sample Service Account (admin-user) 的Token,需要从控制台日志中复制该token。

安装脚本会生成User Certificate,生成User Certificate时会提示输入一个导出证书用的密码。

需要将该证书(kubecfg*) 保存到本地,并安装该证书到浏览器中,然后重启浏览器。

在Chrome浏览器安装用户证书步骤:

  1. 在Chrome浏览器中,打开Settings -> Advanced -> Privacy and security, 然后打开Manage certificates。

  2. 在Personal界面,选择Import,选择文件类型为All files,选择kubecfg.p12文件,并输入之前导出证书时输入的export password。

  3. 重启浏览器。

访问Dashboard

在成功安装上面的证书后,通过浏览器访问:

https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

可以通过运行kubectl cluster-info 来查看master-ip和apiserver-port。

输入上面的token就可以访问Dashboard了。

如果不安装证书直接访问上面的地址会出现“403 system:anonymous”的错误。
网上说的可以通过--anonymous-auth=false 参数设置,亲测在过一段时间后会导致API Server无法访问,并且设置后仍然会遇到“401 Unauthorized”的错误。
网上说的通过basic_auth_file方法来访问方法需要明文写死用户名密码,也不推荐使用。
正确的做法应该是:浏览器安装用户证书 + Service Account Token。
另外,Kubernetes官方不推荐使用NodePort和kubectl proxy方法访问,因为有安全风险。

如果token忘记了,可以运行下面命令来获取admin-user的Service Account的token:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

监控Kubernetes集群

在Kubernetes Dashboard中监控

按照上面的步骤,打开Kubernetes Dashboard,选择Namespaces为“All namespaces”,打开Overview菜单,就可以看到Heapster采集的CPU usage和Memory usage指标。

在Grafana中监控

Kubernetes Dashboard中的Heapster监控比较简单原始,集成Grafana+InfluxDB后可以实现更强大的集群监控。

打开Grafana的Service URL, 比如:https://192.168.37.132:6443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy

可以通过运行kubectl cluster-info 查看Grafana的Service URL。

登录Grafana,缺省的用户名/密码是:admin/admin。

打开内置的Cluster的Grafana Dashboard,可以查看整个Kubernetes集群或指定的Kubernete节点的CPU和内存使用情况。

Cluster Dashboard

打开内置的Pods的Grafana Dashboard,可以查看指定Pod的CPU和内存使用情况。

Pods Dashboard

使用Grafana可以来定制Dashboard实现功能更强大的集群监控。

参考文档:

使用Prometheus监控

Heapster 从Kubernetes v1.11开始被demise, 将不再开发Heapster的新特性。Kubernetes官方推荐使用Prometheus监控Kubernetes集群。

DEPRECATED: Heapster is deprecated. Consider using metrics-server and
a third party metrics pipeline to gather Prometheus-format metrics
instead. See the deprecation timeline for more information on support.
We will not be adding any new features to Heapster.

参考文档:
* https://github.com/kubernetes/heapster

多租户访问

上面的admin-user的权限很大,实际操作中,需要为不同的namespace创建不同的Service Account,并生成相应的用户证书和token。

参考文档:https://docs.bitnami.com/kubernetes/how-to/configure-rbac-in-your-kubernetes-cluster/#use-case-1-create-user-with-limited-namespace-access

参考文档

猜你喜欢

转载自blog.csdn.net/nklinsirui/article/details/80806131