目录
前言
一、dashboard 概述
1.1 dashboard 简介
1.2 应用场景
二、dashboard 部署
2.1 部署思路
2.2 安装dashboard
2.2.1 下载文件
2.2.2 验证
2.2.3 登录
2.3 权限查询
2.4 token认证登录
2.5 密码提取
2.6 设置 token 过期时间
2.7 卸载
常见问题:
相信很多人在做数据分析工作的时候都遇到这种情况,辛辛苦苦做出来的数据报表老板看了嫌弃不够直观、生动,客户看了嫌弃不够高大上。这个时候不妨尝试一下使用Dashboard来展示报表数据,可能有些人对Dashboard不是很熟悉,没关系今天让小编带大家来认识一下Dashboard究竟是何方神圣,它在数据展示上又有哪些优势,以此来帮助大家更好的完成数据分析工作。
Dashboard是基于网页的Kubernetes用户界面。您可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源。您可以使用Dashboard获取运行在集群中的应用的概览信息,也可以创建或者修改Kubernetes资源( 如Deployment,Job,DaemonSet等等)
Dashboard同时展示了Kubernetes集群中的资源状态信息和所有报错信息
Dashboard主要应用的场景有三大类,分别是监控、分析和概览场景。
1.监控场景
在监控场景中,Dashboard主要为用户集中提供便捷的关键指标实时监测,及时告知异常状态,并引导用户定位问题。
2.分析场景
在分析场景中,Dashboard主要通过数据图表,配合控件进行不同维度的数据分析。例如,用户可以通过时间筛选控件过滤图表上的数据范围等。
3.概览场景
在复杂业务中,Dashboard还用于概览场景,集中呈现业务分散的重点信息,用户还可以通过提供的入口快速跳转至相关模块
通常,Dashboard三大主要使用场景是相互配合使用的。例如,用户通常先通过概览Dashboard了解业务整体信息,观察监控数据的情况,如需要进一步分析,用户可以对数据进行多维度分析已获取更多信息。
在监控、分析和概览主要场景中,总结提炼了Dashboard能为用户带来的直接价值主要如下几点:
这里我采用的是第二种NodePort的方式(生产环境推荐第一种方式)。
选择文件夹,下载recommended.yaml到文件夹中。
mkdir -p /home/yaml/dashboard && cd /home/yaml/dashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
#默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:
vi recommended.yaml
...
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 30001
type: NodePort
selector:
k8s-app: kubernetes-dashboard
#启动
kubectl apply -f recommended.yaml
我们需要更改type为NodePort
,指定其外网可以访问,否则其他电脑会访问不到,请注意!
将 Dashboard添加至k8s
kubectl -n kubernetes-dashboard get service
查看pod的状态为running说明dashboard部署成功
kubectl get svc,pods -n kubernetes-dashboard
访问地址:https://NodeIP:30001
此时需要授权才能用
role: 名称空间的系统权限
clusterrole:全局权限
系统权限
# 查询某一个名称空间内的所有系统权限
~]# kubectl -n kube-system get role
# 查询名称空间内的系统权限的详细信息
~]# kubectl -n kube-system describe role kube-proxy
全局权限
# 查看所有全局权限
~]# kubectl -n kube-system get clusterrole
# 指定查看某一个权限的详细信息
~]# kubectl -n kube-system describe clusterrole admin
K8S有两种用户:User 和 Service Account,User 给人用,Service Account 给进程用,让进程有相关权限,Dashboard 是一个进程,我们就可以创建一个Service Account 给它
方法一:
# 书写权限资源
~]# vim admin-token.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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 admin-token.yaml
~]# kubectl -n kubernetes-dashboard get secrets
NAME TYPE DATA AGE
admin-user-token-bxjlz kubernetes.io/service-account-token 3 23s
~]# kubectl -n kubernetes-dashboard describe secrets admin-user-token-bxjlz
Name: admin-user-token-bxjlz
... ...
ca.crt: 1025 bytes
namespace: 20 bytes
token: ..... # 这里这个很长的字符串就是你要找的认证 token
方法二:
创建service account并绑定默认cluster-admin管理员集群角色:
# 创建用户
kubectl create serviceaccount dashboard-admin -n kube-system
# 用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 获取用户Token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
再次登录进行验证:
往后需要再次登陆dashboard页面且让你输密码的时候,你只需要输入以下命令即可重新提取密码:
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
用 token 登陆 kubernetes-dashboard,默认的 token 认证时间是 900s/15 分钟,失效需要重新登录灰常麻烦,下面添加 - --token-ttl=604800 (单位 s)参数修改 token 过期时间为 7 天。 kubernetes-dashboard 平台可使用如下方法,你也可以选择修改 recommended.yaml 文件,重新 apply 即可
步骤:
kubernetes-dashboard
命名空间deployment/kubernetes-dashboard
配置文件- --token-ttl=604800
(单位 s)如果安装的的dashboard错误,可以卸载重新安装。
kubectl get secret,sa,role,rolebinding,services,deployments --namespace=kubernetes-dashboard | grep dashboard
kubectl delete deployment kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl delete role kubernetes-dashboard-minimal --namespace=kubernetes-dashboard
kubectl delete rolebinding kubernetes-dashboard-minimal --namespace=kubernetes-dashboard
kubectl delete sa kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl delete secret kubernetes-dashboard-certs --namespace=kubernetes-dashboard
kubectl delete secret kubernetes-dashboard-key-holder --namespace=kubernetes-dashboard
1、nodeport默认端口范围30000-32767,如果想改变端口范围怎么办?
解决办法:vim /etc/kubernetes/manifests/kube-apiserver.yaml
增加
spec:
containers:
- command:
- kube-apiserver
- --service-node-port-range=1-65535
修改完毕立即生效