新聞中心
K8S 中實現(xiàn) AIOps 的 OpenAPI 項目介紹
作者:祝祥 翻譯 2023-09-15 07:34:15
云計算
云原生 AIOps 發(fā)展非常快。我們可以看到有很多新的項目出現(xiàn)。同時,也會有不少的項目慢慢降低熱度而最終消失,但整體是向前快速發(fā)展,并成為云原生生態(tài)系統(tǒng)最為核心的組成部分之一。

創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計、網(wǎng)站維護(hù)、公眾號搭建、微信小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動行銷領(lǐng)域創(chuàng)造價值而不懈努力!
背景
如今,AI 是各個領(lǐng)域,各個行業(yè)的熱門話題?;贙ubernetes的DevOps應(yīng)用開發(fā)場景也不例外。尤其是對那些追求自動化,高效開發(fā),高效運維的用戶而言。
因此,鑒于最近比較火的 ChatGPT ,與 Kubernetes 結(jié)合的相關(guān)項目也開始出現(xiàn)。下面也讓我們看看最近出現(xiàn)了哪些由OpenAI和ChatGPT支持的開源工具,使K8s的生態(tài)更豐富。
下面介紹的這些工具,大多數(shù)是為終端 (CLI) 使用而設(shè)計的,而不是圖形化。
使用AI對K8進(jìn)行故障排除
1. K8SGPT
- “一個掃描 Kubernetes 集群、診斷和分類問題的工具。它將 SRE 經(jīng)驗編入其分析器,并通過 AI 幫助提取并豐富相關(guān)的信息”
- Website: http://k8sgpt.ai/
- GitHub: https://github.com/k8sgpt-ai/k8sgpt
- GH stars: ~3100
- First commit: Mar 21, 2023
- ~700 commits, 32 releases, ~40 contributors
- Language: Go
k8sgpt 由 Alex Jones 發(fā)起,以 "讓每個人都擁有 Kubernetes 能力 "為目標(biāo),是同類項目中最著名、最突出的一個。
k8sgpt 目前主要通過 CLI 實現(xiàn)其功能,通過 CLI 可以對集群中的錯誤進(jìn)行快速的診斷。 k8sgpt analyze 旨在查找并提示 Kubernetes 集群中出現(xiàn)的問題。使用“分析器 (analyze)”來實現(xiàn)這一功能,它定義了每個K8s對象的邏輯對象以及它可能遇到的問題。例如,Kubernetes Services 的分析器將檢查特定服務(wù)是否存,以及其端點是否就緒。
發(fā)現(xiàn)這樣的問題本身并不是什么大事,但其中的邏輯并不簡單。當(dāng)你要求 k8sgpt 解釋如何解決現(xiàn)有問題時,神奇的事情就發(fā)生了——只要執(zhí)行 k8sgpt analyze --explain 即可。該命令將要求 AI 能針對你的具體情況提供說明,并顯示給你。這些說明將包括執(zhí)行故障排除的操作,包括可以復(fù)制和粘貼來直接執(zhí)行 kubectl 命令。
圖片
針對資源的名稱,k8sgpt 擁有隱藏功能(k8sgpt analyze 命令的--anonymize 選項),可以防止敏感數(shù)據(jù)被發(fā)送到 AI 系統(tǒng)。這對我們是很有幫助的。不過目前還沒有在所有分析器中實現(xiàn)。
如今,k8sgpt 為 Kubernetes 對象提供了很多內(nèi)置分析器,包括Node、Pod、PVC、ReplicaSets、Services、Events、Ingresses、StatefulSets、Deployments、CronJobs、NetworkPolicies,甚至 HPA 和 PDB。通過創(chuàng)建自定義分析器來擴(kuò)展不會太難。
另一個好處是k8sgpt不僅限于單個AI系統(tǒng)。默認(rèn)支持 OpenAI,讓我們訪問 GPT-3.5-Turbo 和 GPT-4 語言模型。但是,我們也可以在其他AI提供商中進(jìn)行選擇,目前包括:
- Azure OpenAI;
- Cohere(這個是最近,7月20日添加的);
- LocalAI — 與 OpenAI 兼容的 API 的本地模型(例如,您可以將其與 llama.cpp 和 ggml 一起使用);
- FakeAI — 用于模擬 AI 系統(tǒng)行為而無需實際調(diào)用它。
K8sgpt 可以用于集成的 API場景,可以利用外部工具,調(diào)用它們的功能來解決 Kubernetes 問題。目前唯一實現(xiàn)的集成是比較有名的開源安全掃描程序 Trivy。通過 k8sgpt integration activate trivy 來啟用它(假設(shè)Trivy Operator 已經(jīng)安裝在集群中),您將擁有一個名為VulnerabilityReport新的k8sgpt過濾器。最后就可以通過 k8sgpt analyze --filter VulnerabilityReport 訪問它。
最后還有一項 k8sgpt 的功能是,我們可以將其安裝為集群內(nèi)的 Kubernetes operator。為此,請使用此處提供的 Helm chart。安裝并應(yīng)用 k8sgpt 配置對象(kind:K8sGPT)后,該工具將對集群進(jìn)行分析,并將掃描結(jié)果存儲在 Results 對象中。這意味著您可以通過執(zhí)行 kubectl get results -o json | jq .來查看獲取結(jié)果。
圖片
k8sgpt 在社區(qū)中帶來的極大的影響。k8sgpt 專注于 K8s 問題的故障診斷,它包含了很多專為此目的設(shè)計的即用功能。此外,它還具有以下特點:
- 靈活,可利用不同的人工智能系統(tǒng);
- 可擴(kuò)展,可以與自定義分析器和第三方工具集成。
2. Kubernetes ChatGPT bot
- “A ChatGPT bot for Kubernetes issues”
- GitHub: https://github.com/robusta-dev/kubernetes-chatgpt-bot
- GH stars: ~900
- First commit: Jan 10, 2023
- ~40 commits, 7 contributors
- Language: Python
該項目由 Robusta 創(chuàng)建,專注于通過將 AI 與 Slack 中顯示的警報集成來解決 Kubernetes 問題。
要利用此機(jī)器人,您必須遵循以下要求:
- 已經(jīng)或準(zhǔn)備在Prometheus(也支持VictoriaMetrics)和AlertManager之上安裝Robusta;
- 使用Slack。
如果一切就緒,您就可以通過使用 webhook 將監(jiān)控告警信息發(fā)送到 Slack。該機(jī)器人會在 Slack 的警報中添加一個 "Ask ChatGPT "按鈕。這樣,點擊該按鈕就可以查詢 AI(使用 OpenAI API 密鑰),并獲得其響應(yīng),從而指導(dǎo)您采取響應(yīng)的建議措施來解決導(dǎo)致該告警的問題。
圖片
就目前而言,它就是這么簡單。不過,作者建議可以通過向 AI 提供額外數(shù)據(jù)(如 Pod 日志和 kubectl get 事件輸出)來進(jìn)一步改進(jìn)其工作方式。
Kubectl AI驅(qū)動的插件
1. kubectl-ai
- “Kubectl plugin for OpenAI GPT”
- GitHub: https://github.com/sozercan/kubectl-ai
- GH stars: ~800
- First commit: Mar 20, 2023
- ~50 commits, 11 releases, ~10 contributors
- Language: Go
這個項目是在 k8sgpt 前一天誕生的。不同的是,它使用不同方式將人工智能 與 Kubernetes 結(jié)合。
該項目是一個kubectl插件,使用OpenAI GPT生成和應(yīng)用Kubernetes清單。
下面是 README 提供的一個簡單的示例:
kubectl ai "create an nginx deployment with 3 replicas"
Attempting to apply the following manifest:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Use the arrow keys to navigate: ↓ ↑ → ←
? Would you like to apply this? [Reprompt/Apply/Don't Apply]:
+ Reprompt
? Apply
Don't Apply通過 "重新提示 "選項,您可以更改特定參數(shù)來完善生成的清單。您可以一次生成幾個清單,這對相互關(guān)聯(lián)的對象(如部署和服務(wù))很有意義。如果建議匹配實際需要的時候,就可以輕松地將其應(yīng)用到集群中。
隨后,你還可以修改現(xiàn)有的 Kubernetes 對象,使用 kubectl ai 對其進(jìn)行縮放或更改其他參數(shù)。
至于AI,kubectl-ai 支持 OpenAI API、Azure OpenAI 服務(wù)和 LocalAI(7 月 31 日合并的最新新增功能)。默認(rèn)語言模型為 GPT-3.5-Turbo,也支持 GPT-4。
2. kubectl-gpt
- “一個 kubectl 插件,通過使用 GPT 模型從自然語言輸入生成 kubectl 命令”
- GitHub: https://github.com/devinjeon/kubectl-gpt
- GH stars: ~40
- First commit: May 29, 2023
- ~20 commits, 3 releases, 1 contributor
- Language: Go
該插件引入了 kubectl gpt 命令,它的唯一功能就是在 Kubernetes 集群中實現(xiàn)你的需求(即以人類語言描述需求,然后實現(xiàn)功能)。以下是該插件文檔中的示例:
kubectl gpt "Print the creation time and pod name of all pods in all namespaces."
kubectl gpt "Print the memory limit and request of all pods"
kubectl gpt "Increase the replica count of the coredns deployment to 2"
kubectl gpt "Switch context to the kube-system namespace"該工具,既可以輸出建議的結(jié)果,也可以直接對 K8S 集群的對象進(jìn)行操作。無論哪種情況,它都會執(zhí)行命令,但首先會顯示該命令,讓你可以看到并確認(rèn)是否愿意繼續(xù)執(zhí)行。如果你愿意,也可以禁用這些功能(打印生成的命令/要求確認(rèn))。
Kubectl-gpt 需要一個 OpenAI API 密鑰才能運行。僅支持 GPT-3,默認(rèn)啟用 GPT-3.5-Turbo??梢允褂?OpenAI GPT API 支持的任何人類語言。
該項目由一名獨立愛好者開發(fā),自 5 月底以來未進(jìn)行過任何更新。
適用于kubernetes的AIOps其他工具
此類別中描述的所有項目幾乎在同一時間啟動。它們也有類似的想法,即在用戶操作 Kubernetes 集群時為其提供各種 AI 輔助功能。所有這些項目的統(tǒng)計數(shù)據(jù)也很相似:一個或幾個貢獻(xiàn)者、大約 100 個星級和數(shù)十次提交。讓我們來看看它們都提供了哪些功能以及有何不同。
1. kopilot
- “您的 AI Kubernetes 專家助手”
- GitHub: https://github.com/knight42/kopilot
- GH stars: ~140
- First commit: Mar 19, 2023
- ~40 commits, 3 releases, 3 contributors
- Language: Go
Kopilot 是后面三個項目中唯一一個用 Go 編寫的項目。它包括兩個功能:故障排除和審計。那么它們具體的功能是什么了?
- 假如,你有一個 Pod 卡在 Pending 或 CrashLoopBackOff 狀態(tài)。這時候,命令 kopilot diagnose 派上用場。它將向AI尋求幫助,然后給出建議,并解釋為什么會發(fā)生這種情況。
圖片
- 如果不確定部署配置是否完善? kopilot audit 命令使用類似的方式,將根據(jù)最佳實踐以及安全要求對其進(jìn)行檢查。
該工具將使用 OpenAI API 令牌和提供的問題來進(jìn)行解答。官方 README 還表示,未來還將提供使用其他人工智能服務(wù)的選項。
遺憾的是,自四月初以來,該項目還沒有任何提交,這顯然令人擔(dān)憂。
2. kopylot
- “面向 Kubernetes 開發(fā)人員的 AI 驅(qū)動助手”
- GitHub: https://github.com/avsthiago/kopylot
- GH stars: ~70
- First commit: Mar 28, 2023
- ~70 commits, 5 releases, 2 contributors
- Language: Python
該工具有類似的審計和診斷功能,并通過提供 "chat "命令實現(xiàn)這一點。它能為你帶來聊天機(jī)器人體驗:你可以用英語詢問一個特定的操作,這個操作會被轉(zhuǎn)換成一個 kubectl 命令。如果它打印的命令看起來沒問題,你就可以確認(rèn)執(zhí)行。就像我們在 kubectl-gpt 中體驗的那樣。
圖片
Kopylot還提供了 "ctl "命令,這是kubectl的一個擴(kuò)展,允許你直接執(zhí)行任何命令。這項功能的目的似乎是讓 Kopylot 成為你使用 Kubernetes 時的最好的助手,而不僅僅是命令 kubectl客戶端。
目前,kopylot 僅支持 OpenAI API 密鑰,無法使用任何其他人類語言。它依賴于 text-davinci-003 GPT-3.5 模型(硬編碼),該模型被視為傳統(tǒng)模型。不過在項目的路線圖中提到了對使用其他 LLM 模型的支持。
但由于其最新版本的發(fā)布日期是 4 月 4 日,因此實現(xiàn)的可能性不大。
3. kube-copilot
- “由OpenAI提供支持的Kubernetes Copilot”
- GitHub: https://github.com/feiskyer/kube-copilot
- GH stars: ~70
- First commit: Mar 25, 2023
- ~70 commits, 8 releases, 1 contributor
- Language: Python
Kubernetes Copilot 將多工具功能集提升到了新的高度。除了 Kubernetes 故障排除、審計和執(zhí)行操作功能外,這個多工具還能根據(jù)你的提示生成清單(就像 kubectl-ai 所做的那樣)。
順便說一下,kube-copilot 的審計功能比你想象的要強(qiáng)大。雖然該工具有 "analyze"(分析)命令來揭示 K8s 資源中可能存在的問題(與 kopilot audit 相同),但它也有 "audit"(審計)命令。后者利用 Trivy 掃描儀專門查找 Pod 可能存在的安全問題。
kube-copilot 的另一個特點是它同時提供命令 CLI 和 Web UI。Web UI 非常簡單,對某些用戶來說可能仍是一個非常喜歡的功能。
圖片
最后要提到的 CLI 功能是,可以使用 Google 搜索。也許有些問題用這種方式比用 ChatGPT 更好解決。不過在我看來,這并不是 K8s 相關(guān)工具最重要的功能。
至于 AI 支持,kube-copilot 可與 OpenAI API 密鑰或 Azure OpenAI 服務(wù)配合使用。它允許你使用 GPT-3.5 和 GPT-4 模型。
盡管該工具是由一個人開發(fā)的,但它的代碼提交情況比較良好。不過,目前既沒有公開的路線圖,也沒有任何問題可以揭示該工具將如何發(fā)展。
其他
還有很多基于 OpenAI 的 Kubernetes 工具和服務(wù),下面會簡單介紹下。
Kubeshop 的 Botkube 是一個消息傳遞機(jī)器人(即 ChatOps),用于監(jiān)控和調(diào)試 Slack、Mattermost、Discord 或 Microsoft Teams 中的 Kubernetes 集群。它最近添加的 Doctor plugin(https://docs.botkube.io/usage/executor/doctor/) 以兩種不同的方式與人工智能連接:1)直接向聊天機(jī)器人詢問問題;2) 使用“獲取幫助”按鈕,該按鈕顯示在錯誤事件的正下方。機(jī)器人將回復(fù)有關(guān)您的問題或特定問題的 AI 生成的建議。啟用此 Botkube 插件需要 OpenAI API 密鑰。
圖片
metaKube 的 KubeGPT 不是一個 CLI 工具,而是一個在線聊天,可以在 Web 瀏覽器中與 AI 討論 Kubernetes。就像常規(guī)的 ChatGPT 一樣,它可以回答問題(例如,Kubernetes 架構(gòu)或一些最佳實踐),并為您生成特定的 YAML 清單。
圖片
實際上,它還能幫我解決其他技術(shù)問題。例如,它同時提供有關(guān) Nomad 的信息。它甚至還指導(dǎo)我安裝 Ubuntu Linux。不過,它核心點還是在 Kubernetes,因此從未來形式上看,它應(yīng)該不會對其他請求提供太多幫助。這項服務(wù)目前處于測試階段。
MagicHappen 是一個 PoC operator,“僅用于娛樂和實驗”。它定義了一個新的 CRD ( kind: MagicHappens ),允許您用人類語言描述任務(wù)——例如,“創(chuàng)建命名空間并進(jìn)行部署”。當(dāng)操作員收到包含此描述的 YAML 清單時,它會將其發(fā)送到 OpenAI 以獲取相關(guān)的 YAML,并將此生成的清單應(yīng)用于群集。請注意,自 4 月以來,沒有對該項目進(jìn)行新的提交。
Kube or Fake 是一個有趣的在線服務(wù),它為您提供了由 ChatGPT 生成的五個 Kubernetes 術(shù)語。通過猜謎的方式找到準(zhǔn)確的服務(wù)。
最后,各種老牌的工具最近也紛紛嵌入了由 OpenAI 支持的功能。實際上,這些工具已經(jīng)有很多了,本文也只是簡單列出了幾項,并不包含所有。下面也是一些按照時間列出了一些:
- ARMO Platform:基于 Kubescape,可根據(jù)您以人類語言指定的請求生成自定義控件,然后由 GPT-3 處理。
- KubeVela Workflow:允許使用 OpenAI API 驗證 Kubernetes 資源(2023 年 4 月)
- Monokle:實現(xiàn)了人工智能輔助 YAML 資源創(chuàng)建,可以利用人工智能根據(jù)提示和驗證策略生成 YAML 清單。(2023 年 6 月)
- Portainer:在其商業(yè)版 v2.18.3 中引入了對 ChatGPT 的實驗性支持,可就如何部署應(yīng)用程序提供即用型答案。(2023年7月)
- Argo CD:Akuity平臺上有一個人工智能助理。它由OpenAI API提供支持,可幫助檢測某些問題和分析日志,執(zhí)行您要求的操作,并回答您的問題。(2023年7月)
總結(jié)
AIOps 給我們帶來了巨大的變革。雖然還有不少改進(jìn)的地方,但開源生態(tài)系統(tǒng)已經(jīng)為 Kubernetes 管理員和用戶提供了很多高效的使用方式:
- K8SGPT是最成功的項目,因為它吸引了眾多的貢獻(xiàn)者和用戶。目前專注于故障排除,它非常靈活,擴(kuò)展性也很高,所以也很希望社區(qū)能快速擴(kuò)大。
- 如果你想在 Slack 中通過AI 生成如何解決 K8S 中的故障問題的解決建議 ,從而簡化監(jiān)控警報的處理過程,那么 Robusta 的 ChatGPT 機(jī)器人和 Kubeshop 的 Botkube 都是不錯的 ChatOps 式選擇。
- 如果需要自動化 YAML 清單生成,請嘗試 kubectl-ai 或 kube-copilot。
目前,AIOps 發(fā)展非???。我們可以看到有很多新的項目出現(xiàn)。同時,也會有不少的項目慢慢降低熱度而最終消失,但整體是向前快速發(fā)展,并成為云原生生態(tài)系統(tǒng)最為核心的組成部分之一。
原文: https://blog.palark.com/chatgpt-tools-for-kubernetes/
文章標(biāo)題:K8S中實現(xiàn)AIOps的OpenAPI項目介紹
網(wǎng)站鏈接:http://fisionsoft.com.cn/article/coigosi.html


咨詢
建站咨詢
