當前位置:網站首頁>kubernetes 部署 dashboard(可視化界面)

kubernetes 部署 dashboard(可視化界面)

2022-07-24 01:02:06醉凡塵¢ World1y

目錄

前言

一、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主要應用的場景有三大類,分別是監控、分析和概覽場景。

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

們需要更改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 給它

  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}')

再次登錄進行驗證:

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

修改完畢立即生效
 

版權聲明
本文為[醉凡塵¢ World1y]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/205/202207240101312962.html

隨機推薦