1、参考资料
https://yq.aliyun.com/articles/635503
http://blog.51cto.com/wangxiaoke/2311028?source=dra
https://github.com/kubernetes/dashboard
2、步骤
#拉取镜像
docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
#重新打标签
docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
#删除无用镜像
docker rmi mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
查看dashboard的POD是否正常启动,如果正常说明安装成功
kubectl get pods --namespace=kube-system
3、Dashboard有多种方式可以访问
- kubectl proxy方式:只支持127.0.0.1和localhost为来源地址的方式访问,需要配置SSH隧道,比较麻烦,不建议使用。
- Node Port方式:该方式容易配置,只建议在开发环境的环境中使用。本文采用这种方式实现。
- Ingress方式:通过Ingress Controller来暴露应用,比较灵活,是最推荐的方式,但较复杂。请参考文章:http://www.ebanban.com/?p=603
- API Server方式:由于API服务器是公开的,可以从外部访问,是比较推荐的方式。请参考文章:http://www.ebanban.com/?p=603
4、通过Node Port方式访问dashboard
- 配置外网访问(不配置的话默认只能集群内访问)
修改service配置,将type: ClusterIP
改成NodePort
执行 kubectl edit service kubernetes-dashboard --namespace=kube-system
- 查看外网暴露端口
kubectl get service --namespace=kube-system
5、访问dashboard
- 创建dashboard用户
创建admin-token.yaml
文件,文件内容如下:
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: admin
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: admin
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
执行kubectl create -f admin-token.yaml
获取登陆token
执行:kubectl describe secret/$(kubectl get secret -nkube-system |grep admin|awk '{print $1}') -nkube-system
- 通过火狐浏览器登陆dashboard,其他的浏览器麻烦些。
- 输入https://192.168.80.132:30502/ =》意思是节点IP:节点端口、
- 默认浏览器会阻止访问,要加入信任列表,选择令牌访问,然后输入token。
登陆后,界面显示效果: