当前位置:网站首页>kubernetes 部署 dashboard(可视化界面)
kubernetes 部署 dashboard(可视化界面)
2022-07-24 01:01:00 【醉凡尘¢ World1y】
目录
前言
相信很多人在做数据分析工作的时候都遇到这种情况,辛辛苦苦做出来的数据报表老板看了嫌弃不够直观、生动,客户看了嫌弃不够高大上。这个时候不妨尝试一下使用Dashboard来展示报表数据,可能有些人对Dashboard不是很熟悉,没关系今天让小编带大家来认识一下Dashboard究竟是何方神圣,它在数据展示上又有哪些优势,以此来帮助大家更好的完成数据分析工作。
一、dashboard 概述
1.1 dashboard 简介
Dashboard是基于网页的Kubernetes用户界面。您可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源。您可以使用Dashboard获取运行在集群中的应用的概览信息,也可以创建或者修改Kubernetes资源( 如Deployment,Job,DaemonSet等等)
Dashboard同时展示了Kubernetes集群中的资源状态信息和所有报错信息
1.2 应用场景
Dashboard主要应用的场景有三大类,分别是监控、分析和概览场景。

1.监控场景
在监控场景中,Dashboard主要为用户集中提供便捷的关键指标实时监测,及时告知异常状态,并引导用户定位问题。
2.分析场景
在分析场景中,Dashboard主要通过数据图表,配合控件进行不同维度的数据分析。例如,用户可以通过时间筛选控件过滤图表上的数据范围等。
3.概览场景
在复杂业务中,Dashboard还用于概览场景,集中呈现业务分散的重点信息,用户还可以通过提供的入口快速跳转至相关模块
通常,Dashboard三大主要使用场景是相互配合使用的。例如,用户通常先通过概览Dashboard了解业务整体信息,观察监控数据的情况,如需要进一步分析,用户可以对数据进行多维度分析已获取更多信息。
在监控、分析和概览主要场景中,总结提炼了Dashboard能为用户带来的直接价值主要如下几点:
- 监控告警,并引导用户定位问题
- 深入分析数据,获知细节信息
- 快速获取业务整体重点信息,管理资源
二、dashboard 部署
2.1 部署思路
- 通过nginx-ingress的方式来对外提供访问
优点:主流,安全,方便管理
缺点:配置相当复杂麻烦,不熟悉的同学会晕圈 - 通过service的NodePort的方式来对外提供访问
优点:部署方便,快捷
缺点:NodePort端口过多造成不易管理的问题,不安全
这里我采用的是第二种NodePort的方式(生产环境推荐第一种方式)。
2.2 安装dashboard
2.2.1 下载文件
选择文件夹,下载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

2.2.2 验证
kubectl -n kubernetes-dashboard get service

查看pod的状态为running说明dashboard部署成功
kubectl get svc,pods -n kubernetes-dashboard

2.2.3 登录
访问地址:https://NodeIP:30001



此时需要授权才能用
2.3 权限查询
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 2.4 token认证登录
K8S有两种用户:User 和 Service Account,User 给人用,Service Account 给进程用,让进程有相关权限,Dashboard 是一个进程,我们就可以创建一个Service Account 给它
- 创建ServiceAccount,根据其管理目标,使用rolebinding或clusterrolebinding绑定至合理role或clusterrole;
- 获取到此ServiceAccount的secret,查看secret的详细信息,其中就有token;
方法一:
# 书写权限资源
~]# 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}')

再次登录进行验证:

2.5 密码提取
往后需要再次登陆dashboard页面且让你输密码的时候,你只需要输入以下命令即可重新提取密码:
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
2.6 设置 token 过期时间
用 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) - 点击更新即可生效


2.7 卸载
如果安装的的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
修改完毕立即生效
边栏推荐
- SQL CASE 多条件用法
- Establishment of static route
- Jianzhi offer 05 two stacks to realize the queue
- [QNX hypervisor 2.2 user manual]9.1 configuration variables
- What the hell is ThreadLocal doing?
- Selection method of geometric objects in Creo 9.0
- Tutorial on principles and applications of database system (042) -- MySQL query (4): using wildcards to construct query conditions
- Solve the problem that MySQL inserts Chinese garbled code into the table
- Concurrent programming 1-2
- Sublime text 3 汉化+添加常用插件
猜你喜欢

Project scenario: NVIDIA SMI unable to datemine the device handle for GPU 0000:01:00.0: unknown error

Bean validation usage article ----05

【LeetCode第 83 场双周赛】

Intelligent video monitoring solutions for elderly care institutions, using new technologies to help the intelligent supervision of nursing homes

黑马程序员-接口测试-四天学习接口测试-第四天-Postman读取外部数据文件,读取数据文件数据,iHRM项目实战,员工管理模块,添加员工,批量运行测试用例,生成测试报告,

Database connection pool & dbutils

Design details related to sap e-commerce cloud Spartacus UI store

落枕如何快速缓解

How to use mitmproxy to get data return in automated testing?

An article teaches you the basic use of kubernetes
随机推荐
制作 .Img 镜像文件
[QNX Hypervisor 2.2用户手册]9 VM配置参考
Idea hot deployment (hot load)
Linx link, first level directory, redirection, CP and MV
Use of crawler request library 2
Create database table db.create in flask project_ all()
The way to access global variables in multi-source file mode (extern usage)
【复盘】关于我在错误的时间选错了技术这件事
The salary of a tester who has worked for 3 years after job hopping is twice that of the original. The secret is
mysql 分支语句case报错
Creo 9.0 mouse button operation for model observation
Off screen rendering & FBO
postman测试接口在URL配置正确的情况下出现404或者500错误
Okaleido tiger NFT is about to log in to the binance NFT platform. Are you looking forward to it?
Dataframe.groupby learning materials
爬虫requests模块的基本使用
Dynamic rip configuration
RPM build has installed the dependent package, but it still reports an error. There is no module provided in the package
Tutorial on principles and applications of database system (042) -- MySQL query (4): using wildcards to construct query conditions
How to use mitmproxy to get data return in automated testing?