在Kubernetes 1.7后,Kubernetes Dashboard的授权方式发生了很大变化,网络上查到的一些中文资料已经过时了。
根据自己的亲身实践,写了一键部署Kubernetes Dashboard脚本。
特点:
不需要修改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浏览器安装用户证书步骤:
在Chrome浏览器中,打开Settings -> Advanced -> Privacy and security, 然后打开Manage certificates。
在Personal界面,选择Import,选择文件类型为All files,选择kubecfg.p12文件,并输入之前导出证书时输入的export password。
重启浏览器。
在成功安装上面的证书后,通过浏览器访问:
https://:/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 Dashboard,选择Namespaces为“All namespaces”,打开Overview菜单,就可以看到Heapster采集的CPU usage和Memory usage指标。
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和内存使用情况。
打开内置的Pods的Grafana Dashboard,可以查看指定Pod的CPU和内存使用情况。
使用Grafana可以来定制Dashboard实现功能更强大的集群监控。
参考文档:
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
http://www.joseluisgomez.com/containers/kubernetes-dashboard/
https://github.com/kubernetes/dashboard/wiki/
https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard—1.7.X-and-above
https://github.com/kubernetes/dashboard/wiki/Creating-sample-user
Kubernetes国内镜像、下载安装包和拉取gcr.io镜像