跳至主要内容

Dashboard GUI

Kubernetes GUI(Graphical User Interface)是一種為 Kubernetes 提供可視化操作的管理工具,旨在降低學習曲線並提升操作效率。 相比於 CLI(Command Line Interface),GUI 提供了直觀的界面,用戶可以透過圖形化的方式管理集群資源,觀察工作負載的狀態,並執行各種操作。

無論是開發者還是運維人員,Kubernetes GUI 都能幫助用戶快速掌握集群的運行情況,實現資源的高效分配與監控。 常見的 Kubernetes GUI 工具有 Kubernetes Dashboard、Lens 和 Octant,它們為 Kubernetes 的操作與管理提供了便捷的可視化支持。


Kubernetes Dashboard 安裝

透過 Helm 部屬

提示

可以參考kubernetes-dashboard進行安裝,以下是我自己的實作經驗

  1. 首先我們可以透過 chocolatey 安裝 helm (若沒有 chocolatey 可以直接安裝 helm)
choco install kubernetes-helm
  1. 透過 helm 增加 Kubernetes Deshboard repository
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
  1. 確認 helm 有增加 repository
helm repo list
---

NAME URL
kubernetes-dashboard https://kubernetes.github.io/dashboard/
  1. 更新一下 helm 的 repository,用以取得最新的 chart
helm repo update
---

Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "kubernetes-dashboard" chart repository
Update Complete. ⎈Happy Helming!
  1. 進行安裝 kubernetes-dashboard
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
---

Release "kubernetes-dashboard" has been upgraded. Happy Helming!
NAME: kubernetes-dashboard
LAST DEPLOYED: Thu Jan 9 15:48:41 2025
NAMESPACE: kubernetes-dashboard
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
*************************************************************************************************
*** PLEASE BE PATIENT: Kubernetes Dashboard may need a few minutes to get up and become ready ***
*************************************************************************************************

Congratulations! You have just installed Kubernetes Dashboard in your cluster.

To access Dashboard run:
kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443

NOTE: In case port-forward command does not work, make sure that kong service name is correct.
Check the services in Kubernetes Dashboard namespace using:
kubectl -n kubernetes-dashboard get svc

Dashboard will be available at:
https://localhost:8443\
  1. 如果需要刪除 helm 的 kubernetes-dashboard,可以執行以下指令
helm delete kubernetes-dashboard --namespace kubernetes-dashboard

設定 Kubernetes Dashboard

  1. 如果這個時候登入上面的 URL 會發現登入不進去,這是正常的,因為沒有 port-forward 的話,kubernetes 預設是完全隔離的!

  2. 接下來我們要取得 pods 的名,透果 get pods 這個指令,我們可以找到 pods,-n 代表在這個 namespase 之下,可以找到 kubernetes-dashboard-kong-XXX 這個 pods,並複製他的名稱

kubectl.exe get pods -n kubernetes-dashboard

---
NAME READY STATUS RESTARTS AGE
kubernetes-dashboard-api-5d9c96b998-k45js 1/1 Running 0 3m34s
kubernetes-dashboard-auth-6bdbb65767-xtbhz 1/1 Running 0 3m34s
kubernetes-dashboard-kong-c5c94f484-q8zsc 1/1 Running 5 (45m ago) 79d
kubernetes-dashboard-metrics-scraper-544dcb84df-lfq8h 1/1 Running 0 3m34s
kubernetes-dashboard-web-7758b7dbb8-r5gjj 1/1 Running 0 3m34s
  1. 執行 port-forward 指令,讓我們可以直接穿透讀取到裡面的 Pods,kubernetes-dashboard-kong-XXX 這個要換成自己的
kubectl.exe -n kubernetes-dashboard port-forward kubernetes-dashboard-kong-c5c94f484-q8zsc 8443:8443
  1. 這時候登入http://localhost:8443/就能看到需要輸入 token 的網頁

kubernetes-dashboard-basic-auth

  1. 接下回到 powershell,需要另外開一個 powershell,之前的不用關,我們需要產生一個 Service Account Token,首先建立一個 default-sa.yaml 的檔案,再透過 kubectl apply 去生成他,-f 代表指定檔案
default-sa.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kube-system-default
labels:
k8s-app: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: default
namespace: kube-system
---
apiVersion: v1
kind: Secret
metadata:
name: default
namespace: kube-system
labels:
k8s-app: kube-system
annotations:
kubernetes.io/service-account.name: default
type: kubernetes.io/service-account-token
kubectl.exe apply -f .\default-sa.yaml
---

clusterrolebinding.rbac.authorization.k8s.io/kube-system-default unchanged
secret/default unchanged
  1. 生成 token 之後,我們需要取得 token,執行 describe secret default 能幫我們取得 secret 裡面的 token
kubectl.exe -n kube-system describe secret default
---

Name: default
Namespace: kube-system
Labels: k8s-app=kube-system
kubernetes.io/legacy-token-last-used=2024-10-31
Annotations: kubernetes.io/service-account.name: default
kubernetes.io/service-account.uid: bc29765a-0069-434d-a831-59136a3d30e7

Type: kubernetes.io/service-account-token

Data
====
ca.crt: 1099 bytes
namespace: 11 bytes
token: 這邊就是要複製的token
  1. 將 token:後面那一串複製到http://localhost:8443/就可以開啟網頁了

kubernetes-dashboard-basic-auth-login


Dashboard GUI 成功畫面

執行以下指令就可以取得https://localhost:8443/#/workloads?namespace=default就可以登入囉~

kubernetes-dashboard