kubernetes 部署 dashboard(可视化界面)

目录

前言

一、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 概述

1.1 dashboard 简介

Dashboard是基于网页的Kubernetes用户界面。您可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源。您可以使用Dashboard获取运行在集群中的应用的概览信息,也可以创建或者修改Kubernetes资源( 如Deployment,Job,DaemonSet等等)
Dashboard同时展示了Kubernetes集群中的资源状态信息和所有报错信息

1.2  应用场景

Dashboard主要应用的场景有三大类,分别是监控、分析和概览场景。

kubernetes 部署 dashboard(可视化界面)_第1张图片

1.监控场景

在监控场景中,Dashboard主要为用户集中提供便捷的关键指标实时监测,及时告知异常状态,并引导用户定位问题。

2.分析场景

在分析场景中,Dashboard主要通过数据图表,配合控件进行不同维度的数据分析。例如,用户可以通过时间筛选控件过滤图表上的数据范围等。

3.概览场景

在复杂业务中,Dashboard还用于概览场景,集中呈现业务分散的重点信息,用户还可以通过提供的入口快速跳转至相关模块

通常,Dashboard三大主要使用场景是相互配合使用的。例如,用户通常先通过概览Dashboard了解业务整体信息,观察监控数据的情况,如需要进一步分析,用户可以对数据进行多维度分析已获取更多信息。

在监控、分析和概览主要场景中,总结提炼了Dashboard能为用户带来的直接价值主要如下几点:

  1. 监控告警,并引导用户定位问题
  2. 深入分析数据,获知细节信息
  3. 快速获取业务整体重点信息,管理资源

二、dashboard  部署

2.1 部署思路

  1. 通过nginx-ingress的方式来对外提供访问
    优点:主流,安全,方便管理
    缺点:配置相当复杂麻烦,不熟悉的同学会晕圈
  2. 通过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

kubernetes 部署 dashboard(可视化界面)_第2张图片

们需要更改type为NodePort,指定其外网可以访问,否则其他电脑会访问不到,请注意!

kubernetes 部署 dashboard(可视化界面)_第3张图片

将 Dashboard添加至k8s

kubernetes 部署 dashboard(可视化界面)_第4张图片

2.2.2  验证

kubectl -n kubernetes-dashboard get service

查看pod的状态为running说明dashboard部署成功

kubectl get svc,pods  -n kubernetes-dashboard

kubernetes 部署 dashboard(可视化界面)_第5张图片

2.2.3  登录

访问地址:https://NodeIP:30001 

kubernetes 部署 dashboard(可视化界面)_第6张图片

kubernetes 部署 dashboard(可视化界面)_第7张图片kubernetes 部署 dashboard(可视化界面)_第8张图片

此时需要授权才能用

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 给它

  1. 创建ServiceAccount,根据其管理目标,使用rolebinding或clusterrolebinding绑定至合理role或clusterrole;
  2. 获取到此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}')

kubernetes 部署 dashboard(可视化界面)_第9张图片

再次登录进行验证:

kubernetes 部署 dashboard(可视化界面)_第10张图片

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)
  • 点击更新即可生效

kubernetes 部署 dashboard(可视化界面)_第11张图片

kubernetes 部署 dashboard(可视化界面)_第12张图片

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

修改完毕立即生效
 

你可能感兴趣的:(kubernetes,容器,云原生)