基於Web的Dashboard來完成Kubernetes的圖形化監控和

starkbl發表於2021-09-09

大家是更喜歡黑白漫畫呢?還是彩色動畫呢?
圖片描述
圖片描述
圖片來自電影《你的名字》海報和相關臨摹,圖片版權歸屬原作者

相信大家是仁者見仁、智者見智。我個人更喜歡看彩色動畫,在絢爛的色彩中更能引起視覺衝突和心動的感覺。

類似的,在我們IT界,和就是黑白漫畫,而GUI介面就是彩色動畫。Kubernetes並沒有預設部署的介面,但是卻有一個可以額外新增的基於Web的Dashboard來完成圖形化的監控和管理。

安裝部署

Dashboard因為沒有在中直接預設安裝,所以需要進行下載部署。推薦的方式就是採用容器化的方式作為應用部署到Kubernetes平臺中。
具體安裝過程可以參見官網:

  1. 首先呼叫dashboard的yaml檔案建立namespace、serviceaccount、service、configmap、secret、role、binding和deployment等。
    kubectl apply -f
  2. 修改dashboard的service,使其使用NodePort模式
    kubectl --namespace=kubernetes-dashboard edit service kubernetes-dashboard
    將預設的type: ClusterIP改成type: NodePort模式
  3. 查詢service在伺服器上分配的物理埠
    kubectl -n kubernetes-dashboard get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.100.103.3 none 8000/TCP 5m24s
kubernetes-dashboard NodePort 10.100.15.196 none 443:32572/TCP 5m24s

上表中的443:32572就表示對應的ClusterIP埠為443,Node節點的埠為32572.

  1. 對於伺服器可以直接採用其公網埠的32572來進行Dashboard的Web訪問:

    其中,32572用上一步命令返回的實際NodePort替代。
    但是你可能會在不同的瀏覽器上,碰到不同的報錯。比如Chrome上的:
    圖片描述
    其本質原因是Dashboard採用了自簽名的Cacerts,很多瀏覽器都不支援。
    解決方法可以調整Dashboard的certs。但是最常用的方式其實就是換一個瀏覽器。推薦大家採用Firefox瀏覽器來訪問Dashboard。
  2. 第一次登陸會觸發登陸許可權控制 圖片描述
    建議大家選用Token模式完成使用者驗證。
  3. 先建立配置用於建立叢集管理員賬戶
    vi dashboard.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  
  1. 然後啟用這個賬號,並賦予其cluster-admin許可權
    kubectl apply -f dashboard.yaml
  2. 查詢新建賬號的Bearer Token
#kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')  
Name: admin-user-token-dtqm2  
Namespace: kubernetes-dashboard  
Labels: <none>  
Annotations: kubernetes.io/service-account.name: admin-user  
kubernetes.io/service-account.uid: 2e360fda-a16d-44ef-8281-2b3e03618151  
  
Type: kubernetes.io/service-account-token  
  
Data  
====  
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWR0cW0yIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZTM2MGZkYS1hMTZkLTQ0ZWYtODI4MS0yYjNlMDM2MTgxNTEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Coa17yCI7FkRDEhYbrRhPFGbdN_5Buwu3cxvNzLv0CTXiRpz1WjMEC11GKG1xue16nq8KXDZy0BYoRhucFF0tYWUfHKC9Nt6cDh9yXuqGiHsL05h-1s0aA04UiQ850NHrGbo8GqTzN22iZfhMac4tdadU-QiPvQa5GzGVPsT9BsO2iv58pONjeprt3b0g6pMM6rqad8PeODq9UAhPXIZXiUiRan7Nh24AGKv5SwJ6FA7ueBP5OoCjKTMvxiBuiy3gnk39f1kWB2XH9vCKMONdS1GgC15wuXC0k7eaAJZQp-y0nOuq7Jv43hFWTMXhOoJf5kuu4KB9MJq0uGgIeZaEg  
ca.crt: 1025 bytes  
namespace: 20 bytes  
  1. 將上圖中的token值輸入Dashboard圖形化介面 圖片描述
    順利進入了Dashboard!
    圖片描述

  1. 部署Deployment 圖片描述
    單擊頂部操作區的+Create按鈕就可以建立Deployment等控制器了。可以選擇Create from form分頁來進行容器映象的指定,也可以選擇Create from input從YAML或JSON檔案來建立deployment。
  2. 線上修改 圖片描述
    點選具體的控制器,可以選擇Edit進行YAML檔案的修改。修改完儲存後,Dashboard會自動Apply這個變更,從而是修改後的功能立刻生效。
  3. 資訊查詢
    圖片描述
    類似於Kuberctl describe,當點選具體的控制器後,可以看到該控制器的主要配置和狀態。
  4. 日誌查詢 圖片描述
    點選某一個POD,可以在右側的選項欄選擇logs,效果和kubernetes logs類似。
  5. 其他監控
    在Dashboard主介面可以透過切換namespace查詢更多的配置和狀態資訊。具體功能留待大家實踐。

大家透過本篇文章的學習,是更加喜歡簡單明瞭的黑白漫畫了呢?還是豐富多彩的動畫了呢?,我們將接著帶著大家進入另一個專題,瞭解Kubernetes的監控和日誌管理。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3705/viewspace-2824135/,如需轉載,請註明出處,否則將追究法律責任。

相關文章