探索AI+k8s:如何使用Deekseek大模型增強k8s-dashboard
一、導(dǎo)讀
Kubernetes(簡稱K8s)的普及讓開發(fā)和運維工作變得更加高效,但它的復(fù)雜性卻讓許多人在使用時面臨挑戰(zhàn)。從網(wǎng)絡(luò)配置到故障排查,每一步都需要深入的技術(shù)積累。然而,隨著人工智能技術(shù)的迅猛發(fā)展,借助智能工具,我們可以將許多復(fù)雜問題簡單化。
本文將向您介紹一款將 AI 助手與 Kubernetes 管理相結(jié)合的輕量級工具——k8m。它將如何幫助開發(fā)者和運維人員高效管理集群資源,優(yōu)化工作流程,讓繁瑣的 Kubernetes 操作變得更加輕松快捷?
二、k8m介紹
k8m 是一款集 AI 與 Kubernetes 于一體的輕量級控制臺工具,專為簡化集群管理設(shè)計?;?AMIS 構(gòu)建,并通過 kom 作為 Kubernetes API 客戶端,k8m 內(nèi)置了 Qwen2.5-Coder-7B 模型交互能力,同時支持接入您自己的私有化大模型,比如deepseek模型。
三、安裝和運行
3.1 ChatGPT 配置指南
內(nèi)置****GPT
從v0.0.8版本開始,將內(nèi)置GPT,無需配置。 如果您需要使用自己的GPT,請參考以下步驟。
環(huán)境變量配置
需要設(shè)置環(huán)境變量,以啟用ChatGPT。
export OPENAI_API_KEY="sk-XXXXX"export OPENAI_API_URL="https://api.siliconflow.cn/v1"
export OPENAI_MODEL="Qwen/Qwen2.5-7B-Instruct"
ChatGPT 狀態(tài)調(diào)試
如果設(shè)置參數(shù)后,依然沒有效果,請嘗試使用./k8m -v 6
獲取更多的調(diào)試信息。 會輸出以下信息,通過查看日志,確認是否啟用ChatGPT。
ChatGPT 開啟狀態(tài):true
ChatGPT 啟用 key:sk-hl**********************************************, url:https: // api.siliconflow.cn/v1ChatGPT 使用環(huán)境變量中設(shè)置的模型:Qwen/Qwen2.5-Coder-7B-Instruc
ChatGPT 賬戶
本項目集成了github.com/sashabaranov/go-openaiSDK。 國內(nèi)訪問推薦使用硅基流動的服務(wù)。 登錄后,在https://cloud.siliconflow.cn/account/ak創(chuàng)建API_KEY
3.2 二進制部署
下載 從 GitHub 獲取最新版本。
項目地址:https://github.com/weibaohui/k8m/
運行 在終端中運行以下命令啟動服務(wù),并通過瀏覽器訪問:
./k8m
Usage of ./k8m:
--admin-password string 管理員密碼 (default "123456")
--admin-username string 管理員用戶名 (default "admin")
-k, --chatgpt-key string 大模型的自定義API Key (default "sk-xxxxxxx")
-m, --chatgpt-model string 大模型的自定義模型名稱 (default "Qwen/Qwen2.5-7B-Instruct")
-u, --chatgpt-url string 大模型的自定義API URL (default "https://api.siliconflow.cn/v1")
-d, --debug 調(diào)試模式
--in-cluster 是否自動注冊納管宿主集群,默認啟用
--jwt-token-secret string 登錄后生成JWT token 使用的Secret (default "your-secret-key")
-c, --kubeconfig string kubeconfig文件路徑 (default "/root/.kube/config")
--kubectl-shell-image string Kubectl Shell 鏡像。默認為 bitnami/kubectl:latest,必須包含kubectl命令 (default "bitnami/kubectl:latest")
--log-v int klog的日志級別klog.V(2) (default 2)
--login-type string 登錄方式,password, oauth, token等,default is password (default "password")
--node-shell-image string NodeShell 鏡像。 默認為 alpine:latest,必須包含`nsenter`命令 (default "alpine:latest")
-p, --port int 監(jiān)聽端口 (default 3618)
--sqlite-path string sqlite數(shù)據(jù)庫文件路徑, (default "./data/k8m.db")
-v, --v Level klog的日志級別 (default 2)
3.3 k8s中yaml部署
以下是k8m支持的環(huán)境變量設(shè)置參數(shù)及其作用的表格:
環(huán)境變量 | 默認值 | 說明 |
PORT | 3618 | 監(jiān)聽的端口號 |
KUBECONFIG | ~/.kube/config | kubeconfig 文件路徑 |
OPENAI_API_KEY | "" | 大模型的 API Key |
OPENAI_API_URL | "" | 大模型的 API URL |
OPENAI_MODEL | Qwen/Qwen2.5-7B-Instruct | 大模型的默認模型名稱,如需DeepSeek,請設(shè)置為deepseek-ai/DeepSeek-R1-Distill-Qwen-7B |
LOGIN_TYPE | "password" | 登錄方式(如 password, oauth, token) |
ADMIN_USERNAME | "admin" | 管理員用戶名 |
ADMIN_PASSWORD | "123456" | 管理員密碼 |
DEBUG | "false" | 是否開啟 debug 模式 |
LOG_V | "2" | log輸出日志,同klog用法 |
JWT_TOKEN_SECRET | "your-secret-key" | 用于 JWT Token 生成的密鑰 |
KUBECTL_SHELL_IMAGE | bitnami/kubectl:latest | kubectl shell 鏡像地址 |
NODE_SHELL_IMAGE | alpine:latest | Node shell 鏡像地址 |
SQLITE_PATH | /data/k8m.db | 持久化數(shù)據(jù)庫地址,默認sqlite數(shù)據(jù)庫,文件地址/data/k8m.db |
IN_CLUSTER | "true" | 是否自動注冊納管宿主集群,默認啟用 |
這些環(huán)境變量可以通過在運行應(yīng)用程序時設(shè)置
注意:環(huán)境變量會被啟動參數(shù)覆蓋。
- 其中模型環(huán)境變量需要根據(jù)實際情況修改,yaml中的142,144,146行
- yaml中的91行需要改成自己集群的sc名稱,主要是為了做持久化數(shù)據(jù)用
---
apiVersion:v1
kind:Namespace
metadata:
name:k8m
---
apiVersion:v1
kind:ServiceAccount
metadata:
labels:
app:k8m
name:k8m
namespace:k8m
---
kind:Role
apiVersion:rbac.authorization.k8s.io/v1
metadata:
labels:
app:k8m
name:k8m
namespace:k8m
rules:
-verbs:
-"*"
apiGroups:
-"*"
resources:
-"*"
---
kind:ClusterRole
apiVersion:rbac.authorization.k8s.io/v1
metadata:
labels:
app:k8m
name:k8m
rules:
-verbs:
-"get"
-"list"
-"watch"
-"pods/exec"
apiGroups:
-"*"
resources:
-"*"
-verbs:
-"get"
-"list"
-"watch"
-"pods/exec"
nonResourceURLs:
-"*"
---
apiVersion:rbac.authorization.k8s.io/v1
kind:RoleBinding
metadata:
labels:
app:k8m
name:k8m
namespace:k8m
roleRef:
apiGroup:rbac.authorization.k8s.io
kind:Role
name:k8m
subjects:
-kind:ServiceAccount
name:k8m
namespace:k8m
---
apiVersion:rbac.authorization.k8s.io/v1
kind:ClusterRoleBinding
metadata:
name:k8m
roleRef:
apiGroup:rbac.authorization.k8s.io
kind:ClusterRole
name:k8m
subjects:
-kind:ServiceAccount
name:k8m
namespace:k8m
---
apiVersion:v1
kind:PersistentVolumeClaim
metadata:
name:k8m-pv-claim
namespace:k8m
labels:
app.kubernetes.io/name:k8m
spec:
storageClassName:nfs-sc##這里需要改成自己集群的sc名稱
accessModes:
-ReadWriteMany
resources:
requests:
storage:10Gi
---
apiVersion:v1
kind:Service
metadata:
name:k8m-nodeport
namespace:k8m
labels:
app:k8m
spec:
ports:
-name:http-k8m
protocol:TCP
port:3618
targetPort:3618
nodePort:31999
selector:
app:k8m
type:NodePort
---
apiVersion:apps/v1
kind:Deployment
metadata:
name:k8m
namespace:k8m
labels:
app:k8m
spec:
replicas:1
selector:
matchLabels:
app:k8m
template:
metadata:
labels:
app:k8m
spec:
containers:
-name:k8m
image:registry.cn-hangzhou.aliyuncs.com/minik8m/k8m:0.0.66
env:
-name:DEBUG
value:"false"
-name:LOG_V
value:"6"
-name:OPENAI_API_KEY
value:"sk-xxxx"
-name:OPENAI_API_URL
value:"http://xxxxxxx/deepseek-14b"
-name:OPENAI_MODEL
value:"deepseek-14b"
-name:KUBECTL_SHELL_IMAGE
value:bitnami/kubectl:latest
-name:NODE_SHELL_IMAGE
value:alpine:latest
-name:SQLITE_PATH
value:/app/data/k8m.db
-name:IN_CLUSTER
value:"false"
ports:
-containerPort:3618
protocol:TCP
name:http-k8m
imagePullPolicy:IfNotPresent
volumeMounts:
-name:kubepi-persistent-storage
mountPath:/app/data
restartPolicy:Always
serviceAccountName:k8m
volumes:
-name:kubepi-persistent-storage
persistentVolumeClaim:
claimName:k8m-pv-claim
四、常用功能介紹
4.1 Yaml屬性自動翻譯
k8m 提供集成的 YAML 瀏覽、編輯和文檔查看功能,支持自動翻譯 YAML 屬性。無論是查找字段含義還是確認配置細節(jié),您都無需再費時費力地搜索,極大提高了工作效率。
img
imgimg
4.2 Event信息AI問診
在 Event 頁面,k8m 內(nèi)置了 AI 問診功能,可智能分析異常事件,并提供詳細的解釋。點擊事件前的“AI大腦”按鈕,稍等片刻即可查看診斷結(jié)果,快速定位問題原因。
點擊Event信息前面的“AI大腦”
img
稍等片刻,AI返回解讀信息
img
4.3 錯誤日志AI問診
日志分析是定位問題的重要環(huán)節(jié),但面對大量報錯信息,如何高效排查?k8m 支持 AI 日志診斷,幫助快速識別關(guān)鍵錯誤并生成解決建議。只需選中相關(guān)日志,點擊 AI 問診按鈕,即可獲得診斷報告。
當(dāng)服務(wù)運行不正常的時候,可能第一件事就是來看日志。但是往往報錯的日志一大堆,難以抓住頭緒,這時候,要是AI能幫忙看看就好了~~~
首先進入Pod日志界面
img
點擊查看日志
img
選中錯誤日志,在前面打勾,點擊右面的AI問診按鈕
img
稍等片刻,AI診斷報告呈上,有沒有感覺很酷~
4.4 AI智檢
智檢功能主要是引用了k8s_gpt工具中預(yù)置的規(guī)則使用大模型,進行集群的智能巡檢,目前平臺支持集群,節(jié)點,部署,有狀態(tài)集,容器組,svc,ingress等多個資源對象的巡檢
img
img
4.5 運行命令自動生成
日常運維中,Pod 內(nèi)命令操作不可避免。借助 AI,您只需輸入需求描述,k8m 即可自動生成合適的命令供參考,減少查找時間,提高效率。
首先進入POD Shell中
img
在命令對話框,嘗試輸入一個段描述,比如查看存儲容量,那么AI會自動返回df-h回來,如果你描述的信息越多,那么AI返回的命令也會更精確。當(dāng)然也可以參考AI的命令,你自己再加工一下~
img
4.6 MCP工具支持
- v0.0.66 更新,增加MCP支持
img
img
4.7 集群納管
k8m支持多集群管理,一個dashboard可以納管多個集群,在界面進行切換,拿到快速訪問集群資源的能力,目前納管只支持kubeconfig文件來進行納管,需要網(wǎng)絡(luò)可通
img
img
可以在多集群菜單中點擊切換,也可以在右上角切換集群
img
img
4.8 用戶權(quán)限管理
目前k8m中支持添加用戶和用戶組,給用戶組賦予權(quán)限之后,整個用戶組中的用戶都有了對應(yīng)的角色權(quán)限,現(xiàn)階段權(quán)限是全局所有集群的,后續(xù)會細化到集群和命名空間,一共三種角色權(quán)限
集群****管理員:可以管理和操作所有集群資源,包括創(chuàng)建、修改、刪除等操作。
集群****只讀:僅可查看集群資源信息,無法進行修改操作。
平臺管理員:可以管理平臺配置、用戶權(quán)限等系統(tǒng)級設(shè)置。
img
五、總結(jié)
k8m 作為一款結(jié)合 AI 和 Kubernetes 的工具,展現(xiàn)了其簡潔高效的設(shè)計理念。從便捷的文件管理、日志診斷到智能化的 YAML 翻譯和故障排查,k8m 憑借其直觀的界面和 AI 支持,極大提升了 Kubernetes 的易用性和可操作性。
無論是需要快速查看集群狀態(tài),還是解決復(fù)雜的配置和運行問題,k8m 都能為開發(fā)者和運維團隊提供可靠支持。同時,它兼容本地化大模型部署,有效解決了數(shù)據(jù)安全和訪問效率問題,為企業(yè)提供更高的自主性。