Skip to main content

Command Palette

Search for a command to run...

Kubectl - 利用 kubectl-graph 視覺化資源與分布吧!( Windows )

自己的星團珠寶自己拚!

Updated
2 min read
R

沒有天資聰穎,只是比別人花更多的時間沈浸在這世界裡。

自己的星團珠寶自己拚!

將 Kubernetes 資源分布視覺化

cypher-loki.png

steveteuber/kubectl-graph

前言

最近工作操作 kubernetes (K8s) 的時候,想說來視覺化一下資源分布使用情形

於是逛了 awesome-kubectl-plugins,找到了 kubectl-graph 一個視覺化的工具。

能以星型網的圖形介面呈現資源使用的狀況與節點分布,

是一個輕量簡易的星型拓撲視覺化工具。

由於 kubectl-graph 教學範例以 mac 說明,

因此筆者嘗試使用 Windows 進行操作展示。

前置作業

在一切作業開始前,希望您有以下基礎知識或環境設置:

  • 具有節點運作中的 Kubernetes 服務
  • 熟悉且已安裝 kubetcl ( v1.12 or later )
  • 已安裝 krew ( kubectl krew )
  • 熟悉且已安裝 docker
  • 具有 Java 環境,且最低版本要求 55 ( Java 11 )

安裝教學

以下安裝步驟與 kubectl-graph 相同,

也可以直接看著 repo 的 README 步驟做。

1. 安裝 krew

如果已經有此管理套件則可以直接跳過。

Krew 官方網站 安裝,在 Install 頁面 最下方可以找到 Windows 安裝步驟 。

確認是否安裝成功:

kubectl krew version

2. 安裝 graphviz

在 kubectl-graph 有提到使用了 graphviz,能夠使用 dot 命令產出靜態圖檔,

由於我們是 Windows 環境,乖乖的去官方網站下載安裝吧!

下載頁面中,選擇 Stable Windows install packages 下載就可以了:

環境變數建議在選擇的時候直接勾選好。

1625673759.png

確認是否安裝成功 ( -V 為大寫 ):

dot -V

3. 安裝 cypher-shell

作者在圖形資料上使用了 Neo4j database,為了與資料庫溝通,

在這裡你可以選擇安裝 Neo4j,或者選擇輕量地安裝 cypher-shell

筆者不建議安裝 Neo4j,因為步驟繁瑣麻煩…

直接用 docker pull image 就可以了!

cypher-shell 頁面選擇 cypher-shell-4.3.0.zip

接著再將解壓縮後的 cypher-shell 資料夾路徑加入到環境變數。

請注意!!!!!Java 版本務必需要為 11以上。

確認是否安裝成功:

cypher -v

4. 安裝 kubectl-graph

終於可以安裝我們的主角了!

kubectl krew install graph

確認是否安裝成功:

kubectl graph -h

使用教學 - SVG

將 pods 資訊輸出給 dot 建立 SVG 圖檔

kubectl graph pods --field-selector status.phase=Running -n kube-system | dot -T svg -o pods.svg
  • kube-system:這是 Kubernetes 系統的 namesapce,你可以改成其他 namesapce

使用教學 - Visualize

視覺化星狀圖

在這裡先利用 docker 安裝 image 並啟動:

docker run --rm -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=none neo4j
  • NEO4J_AUTH:環境變數直接給 none 就可以了,或者你有自己的密碼設置

完成後可以開啟網址檢視畫面:http://localhost:7474/

1625674573.png

由於我們沒設置密碼因此直接 connect 即可。

1625676706.png

登入後點選左上的 Database Information,確認 neo4j。

1625674732.png

接著我們就可以利用指令將節點資訊匯入資料庫了:

kubectl graph all -n kube-system -o cypher | cypher-shell
  • kube-system:你可以改成其他 namesapce

如果剛剛 neo4j 資料庫有設置帳號密碼,可以參考 Syntax

kubectl graph all -n loki -o cypher | cypher-shell -u neo4j -p secret
  • cypher-shell [-u USERNAME, --username USERNAME]

在網頁上就可以看到 Labels 有許多分類啦~~~~

1625676891.png

Reference

有勘誤之處,不吝指教。ob'_'ov