| 为  |  容  |  器  |  技  |  术  |  而  |  生  |

前  言


dashboard 是 Kubernetes 的一个插件,代码在单独的开源项目里 1 年前还是特别简单的一个 UI,只能在上面查看 pod 的信息和部署 pod 而已,现在已经做的跟Docker 企业版的 Docker Datacenter 很像了。

注:本文写作背景基于 Kubernetes1.6.0版本


官方文件目录:kubernetes/cluster/addons/dashboard
我们使用的文件:


已经修改好的 yaml 文件见:dashboardhttps://github.com/rootsongjc/kubernetes-handbook/tree/master/manifests/dashboard


由于 kube-apiserver 启用了 RBAC 授权,而官方源码目录的 dashboard-controller.yaml 没有定义授权的ServiceAccount,所以后续访问 kube-apiserver 的 API 时会被拒绝,web中提示:



增加了一个 dashboard-rbac.yaml 文件,定义一个名为 dashboard 的 ServiceAccount,然后将它和 Cluster Role view 绑定。


配置 dashboard-service

  • 指定端口类型为 NodePort,这样外界可以通过地址 nodeIP:nodePort 访问 dashboard;

配置 dashboard-controller




执行所有定义文件


检查执行结果


查看分配的 NodePort:


  • NodePort 30312 映射到 dashboard pod 80 端口;

检查 controller:



访问 dashboard


有以下三种方式:

  • kubernetes-dashboard 服务暴露了 NodePort,可以使用 http://NodeIP:nodePort 地址访问 dashboard;
  • 通过 kube-apiserver 访问 dashboard(https 6443 端口和 http 8080 端口方式);
  • 通过 kubectl proxy 访问 dashboard:

通过 kubectl proxy 访问 dashboard


启动代理



  • 需要指定 --accept-hosts 选项,否则浏览器访问 dashboard 页面时提示 “Unauthorized”;

浏览器访问 URL:http://172.20.0.113:8086/ui 
自动跳转到:
http://172.20.0.113:8086/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard/#/workload?namespace=default


通过 kube-apiserver 访问 dashboard


获取集群服务地址列表:



浏览器访问 URL:https://172.20.0.113:6443/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard浏览器会提示证书验证,因为通过加密通道,以改方式访问的话,需要提前导入证书到你的计算机中。
这是我当时在这遇到的坑,已经解决:https://github.com/opsnull/follow-me-install-kubernetes-cluster/issues/5


导入证书

将生成的 admin.pem 证书转换格式:

将生成的 admin.p12 证书导入的你的电脑,导出的时候记住你设置的密码,导入的时候还要用到。
如果你不想使用 https 的话,可以直接访问 insecure port 8080 端口:http://172.20.0.113:8080/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard


Figure: kubernetes-dashboard
由于缺少 Heapster 插件,当前 dashboard 不能展示 Pod、Nodes 的 CPU、内存等 metric 图形。


经 Jimmy Song 本人授权, K8sMeetup 中国将持续转载他的 Kubernetes 学习笔记,由浅入深地分享他在学习过程中的收获。gitbook可访问:http://jimmysong.io/kubernetes-handbook/


编辑:小百科 


END