kubernetes dashboard 是 k8s 自带的 k8s 图形化管理工具。使用这个工具可以帮助用户通过图形化页面配置 k8s 资源,掌握 k8s 系统的整体使用情况,把用户的双手从敲 kubectl 命令中解放出来。
下面我们就介绍安装 kubernetes dashboard 的详细步骤。
下载安装
执行下面的命令下载安装 kubernetes dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
默认安装完成以后 kubernetes dashboard 服务使用的是 clusterIP 只能在 k8s 的内网访问。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard ClusterIP 10.43.109.187 <none> 443/TCP 25h
dashboard-metrics-scraper ClusterIP 10.43.176.18 <none> 8000/TCP 25h
配置服务让外界可以访问
要解决这个问题我们可以创建一个 nodeport 服务对外直接暴露 node IP 和端口,让外界能够直接访问。
输入以下命令完成 nodeport 的创建:
kubectl expose deployment kubernetes-dashboard --type=NodePort --name=kubernetes-dashboard-nodeport --port=30433 -n kubernetes-dashboard
使用下面的命令可以检查 nodeport 服务的状态
kubectl get service kubernetes-dashboard-nodeport -n kubernetes-dashboard
现在在浏览器中输入 https://ip:30433 就可以看到登录界面了。
创建用户和 token
系统提示要有 token 才能访问。我们需要做两件事情:
- 生成用户
- 给用户增加角色
生成用户
保存下面的 yaml 为文件,文件名可以为user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
运行下面的命令创建用户
kubectl apply -f user.yaml
添加角色
保持下面的 yaml 为文件,文件名可以为 role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
运行下面的命令绑定角色
kubectl apply -f role.yaml
生成 token
运行下面的命令生成 token
kubectl -n kubernetes-dashboard create token admin-user
保存好 token,以后我们需要使用 token 登录 kubernetes dashboard.
完成以上步骤后我们就可以通过 dashboard 访问和控制我们的 k8s 系统了。
用上面的命令生成的 token 有效期是 1 小时。过了有效期需要重新生成 token。可以参考以下链接来生成没有有效期限制的 token。
- 生成没有有效期限制的 token
结论
本文介绍了如何安装和访问 kubernetes dashboard。安装相对简单,复杂的是暴露该服务并且设置用户来访问。