安装
1. Kubernetes Dashboard 是 k8s集群的一个 WEB UI管理工具,代码托管在 github 上,
地址:https://github.com/kubernetes/dashboard
2. 安装
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
访问方式有三种:
①通过节点地址访问
在配置文件里加入如下字段
3.部署
kubectl create -f kubernetes-dashboard.yaml
4.查看其外网访问端口
kubectl get svc kubernetes-dashboard -n kube-system
访问url:
https://13x.1xx.48.xxx:32740/
②使用 Kube-proxy API 代理形态访问
kubectl proxy --address="0.0.0.0" --accept-hosts='^localhost$,^127\.0\.0\.1$,^172\.24\.4'
http://172.24.4.15:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
要想通过代理方式连接服务,必需要通过特定格式的 Proxy URL:
http://<apiserver-address>/api/v1/namespaces/<service-namespace>/services/[https:]<service-name>:[<port-name>]/proxy
- apiserver-address就为你所输入kubectl proxy命令那台机器的地址
- port-name为可选项,如果你没有指定端口的名字
- 协议为可选项,如果你使用的为 http
这里有坑,注意 service-name 和 port-name 之间的冒号,即使没有使用 port-name,而service-name 后的冒号也不可以少 参考官网的文档有误
代理地址请修改为你的Master节点IP
③通过端口转发访问
kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 8080:443 --address=0.0.0.0
然后直接访问集群中的任何一个节点 IP 加上上面的31694端口即可打开 dashboard 页面了
这里我选择第二种方式
身份认证
登录 dashboard 的时候支持 Kubeconfig 和token 两种认证方式,Kubeconfig 中也依赖token 字段,所以生成token 这一步是必不可少的。
生成token
我们创建一个admin用户并授予admin 角色绑定,使用下面的yaml文件创建admin用户并赋予他管理员权限,然后就可以通过token 登陆dashbaord,这种认证方式本质实际上是通过Service Account 的身份认证加上Bearer token请求 API server 的方式实现,参考 Kubernetes 中的认证。
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
[root@k8s-master k8s-auto]# kubectl apply -f kubernetes_token.yaml
clusterrolebinding.rbac.authorization.k8s.io/admin created
serviceaccount/admin created
kubectl get secret admin-token-wkmhh -o jsonpath={.data.token} -n kube-system |base64 -d;
将上述命令生成的token拿去登录
这种是秘钥不对,检查修改后重试
这种是找不到请求的资源,我这里是因为只有一个master节点,上面没有其他服务,正常应如下