K8S で AIOps を実装するための OpenAPI プロジェクトの紹介

K8S で AIOps を実装するための OpenAPI プロジェクトの紹介

背景

現在、AIはあらゆる分野や業界で話題になっています。 Kubernetes ベースの DevOps アプリケーション開発シナリオも例外ではありません。特に自動化、効率的な開発、効率的な運用と保守を追求するユーザー向けです。

そのため、最近のChatGPTの人気を受けて、Kubernetesと組み合わせた関連プロジェクトも登場し始めています。また、K8s エコシステムを充実させるために最近登場した、OpenAI と ChatGPT がサポートするオープンソース ツールについても見てみましょう。

以下で説明するツールのほとんどは、グラフィカルな使用ではなく、ターミナル (CLI) での使用向けに設計されています。

AI による K8s のトラブルシューティング

1. K8SGPT

  • 「Kubernetes クラスターをスキャンし、診断し、問題をトリアージするツールです。SRE の経験をアナライザーに組み込み、AI を使用して関連情報を抽出し、強化します。」
  • ウェブサイト: http://k8sgpt.ai/
  • GitHub: https://github.com/k8sgpt-ai/k8sgpt
  • GH スター: ~3100
  • 最初のコミット: 2023年3月21日
  • 約 700 件のコミット、32 件のリリース、約 40 人の貢献者
  • 言語: Go

k8sgpt は、Alex Jones が「すべての人に Kubernetes の機能を提供する」という目標を掲げて開始したもので、この種のプロジェクトの中で最も有名かつ著名なプロジェクトです。

k8sgpt は現在、主に CLI を通じて機能を実装しており、これを使用してクラスター内のエラーを迅速に診断できます。 k8sgpt analyze は、Kubernetes クラスターの問題を検出して警告するように設計されています。これは、各 K8s オブジェクトの論理オブジェクトと、発生する可能性のある問題を定義する「アナライザー」を使用して行われます。たとえば、Kubernetes サービスのアナライザーは、特定のサービスが存在するかどうか、およびそのエンドポイントの準備ができているかどうかを確認します。

このような問題を発見すること自体は大したことではありませんが、その背後にあるロジックは単純ではありません。既存の問題を解決する方法を説明するように k8sgpt に要求すると、魔法が起こります。k8sgpt analyze --explain を実行するだけです。このコマンドは、AI に特定の状況に応じた指示を出して表示するように要求します。これらの手順には、コピーして貼り付けて直接実行できる kubectl コマンドなど、トラブルシューティングを実行するためのアクションが含まれます。

写真

k8sgpt には、リソース名を非表示にする機能 (k8sgpt analyze コマンドの --anonymize オプション) があり、機密データが AI システムに送信されるのを防ぎます。これは私たちにとって非常に役に立ちます。ただし、まだすべてのアナライザーに実装されているわけではありません。

現在、k8sgpt は、Node、Pod、PVC、ReplicaSets、Services、Events、Ingresses、StatefulSets、Deployments、CronJobs、NetworkPolicies、さらには HPA や PDB など、Kubernetes オブジェクト用の多くの組み込みアナライザーを提供しています。カスタム アナライザーを作成して拡張するのはそれほど難しくありません。

もう 1 つの利点は、k8sgpt が単一の AI システムに限定されないことです。 OpenAI はデフォルトでサポートされているため、GPT-3.5-Turbo および GPT-4 言語モデルにアクセスできます。ただし、現在以下を含む他の AI プロバイダーから選択することもできます。

  • Azure OpenAI;
  • Cohere (これは最近、7 月 20 日に追加されました)。
  • LocalAI — OpenAI 互換 API を備えたローカル モデル (例: llama.cpp および ggml で使用可能)。
  • FakeAI — 実際に呼び出さずに AI システムの動作をシミュレートするために使用されます。

K8sgpt は統合 API シナリオで使用でき、外部ツールを活用してその関数を呼び出して Kubernetes の問題を解決できます。これまでに実装された唯一の統合は、比較的よく知られているオープンソースのセキュリティ スキャナー Trivy との統合です。 k8sgpt 統合のアクティブ化 trivy を介してこれを有効にすると (Trivy Operator がクラスターにすでにインストールされていると想定)、VulnerabilityReport という新しい k8sgpt フィルターが作成されます。最後に、k8sgpt analyze --filter VulnerabilityReport を通じてアクセスできます。

最後に、k8sgpt のもう 1 つの機能は、クラスター内に Kubernetes オペレーターとしてインストールできることです。これを行うには、ここで提供されている Helm チャートを使用します。 k8sgpt 構成オブジェクト (種類: K8sGPT) をインストールして適用すると、ツールはクラスターを分析し、スキャン結果を Results オブジェクトに保存します。つまり、kubectl get results -o json | を実行することで、取得した結果を表示できます。 jq 。

写真

k8sgpt はコミュニティに大きな影響を与えます。 k8sgpt は K8s の問題のトラブルシューティングに重点を置いており、この目的のために設計されたすぐに使用できる機能が多数含まれています。さらに、次の機能があります。

  • 柔軟性があり、さまざまな AI システムを活用できます。
  • 拡張可能で、カスタム アナライザーやサードパーティ ツールと統合できます。

2. Kubernetes ChatGPTボット

  • 「Kubernetes の問題に対応する ChatGPT ボット」
  • GitHub: https://github.com/robusta-dev/kubernetes-chatgpt-bot
  • GH スター: ~900
  • 最初のコミット: 2023年1月10日
  • 約 40 件のコミット、7 人の貢献者
  • 言語: Python

Robusta によって作成されたこのプロジェクトは、Slack に表示されるアラートと AI を統合することで Kubernetes の問題を解決することに重点を置いています。

このボットを活用するには、次の要件に従う必要があります。

  • Prometheus (VictoriaMetrics もサポートされています) および AlertManager 上に Robusta をインストールしているか、インストールする予定がある。
  • Slack を使用してください。

すべての準備が整ったら、Webhook を使用して Slack に監視アラートを送信できます。ボットは Slack アラートに「ChatGPT に質問」ボタンを追加します。ボタンをクリックすると、AI にクエリが実行され (OpenAI API キーを使用)、AI からの応答が返され、アラートの原因となった問題を解決するための推奨アクションを実行するようにガイドされます。

写真

今のところ、それはそれほど簡単です。ただし、著者らは、Pod ログや kubectl get イベント出力などの追加データを AI に提供することで、AI の動作をさらに改善できると示唆しています。

Kubectl AI駆動プラグイン

1. kubectl-ai

  • 「OpenAI GPT 用 Kubectl プラグイン」
  • GitHub: https://github.com/sozercan/kubectl-ai
  • GH スター: ~800
  • 最初のコミット: 2023年3月20日
  • 約 50 件のコミット、11 件のリリース、約 10 人の貢献者
  • 言語: Go

このプロジェクトはk8sgptの1日前に誕生しました。違いは、人工知能と Kubernetes を異なる方法で組み合わせていることです。

このプロジェクトは、OpenAI GPT を使用して Kubernetes マニフェストを生成および適用する kubectl プラグインです。

以下は 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

Reprompt オプションを使用すると、特定のパラメータを変更して、生成されたマニフェストを調整できます。一度に複数のマニフェストを生成できます。これは、デプロイメントやサービスなどの相互に関連するオブジェクトに適しています。提案が実際のニーズに一致する場合は、クラスターに簡単に適用できます。

その後、kubectl ai を使用して、既存の Kubernetes オブジェクトを変更してスケーリングしたり、他のパラメータを変更したりすることもできます。

AI に関しては、kubectl-ai は OpenAI API、Azure OpenAI サービス、LocalAI (7 月 31 日に統合された最新の追加) をサポートしています。デフォルトの言語モデルは GPT-3.5-Turbo で、GPT-4 もサポートされています。

2. kubectl-gpt

  • 「GPT モデルを使用して自然言語入力から kubectl コマンドを生成する kubectl プラグイン」
  • GitHub: https://github.com/devinjeon/kubectl-gpt
  • GH スター: ~40
  • 最初のコミット: 2023年5月29日
  • 約 20 件のコミット、3 件のリリース、1 人の貢献者
  • 言語: Go

このプラグインは、Kubernetes クラスターに要件を実装する (つまり、要件を人間の言語で記述してから機能を実装する) ことだけを目的とした kubectl gpt コマンドを導入します。以下はプラグインのドキュメントからの例です。

 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"

このツールは、推奨結果を出力するだけでなく、K8S クラスター内のオブジェクトを直接操作することもできます。どちらの場合でも、コマンドは実行されますが、最初に表示されるので、それを確認して続行するかどうかを確認できます。必要に応じて、これらの機能を無効にすることもできます (生成されたコマンドを印刷する/確認を求める)。

Kubectl-gpt を実行するには OpenAI API キーが必要です。 GPT-3 のみがサポートされており、GPT-3.5-Turbo はデフォルトで有効になっています。 OpenAI GPT API でサポートされている任意の人間の言語を使用できます。

このプロジェクトは独立した愛好家によって開発されており、5月末から更新されていません。

Kubernetes 向けのその他の AIOps ツール

このカテゴリで説明されているすべてのプロジェクトは、ほぼ同時に開始されました。 Kubernetes クラスターを運用する際に、AI を活用したさまざまな機能をユーザーに提供するという同様の考えを持っています。これらすべてのプロジェクトの統計も同様です。貢献者は 1 人または数人、スターは約 100 個、コミットは数十件です。それぞれがどのような機能を提供し、どう違うのかを見てみましょう。

1. コパイロット

  • 「あなたの AI Kubernetes エキスパート アシスタント」
  • GitHub: https://github.com/knight42/kopilot
  • GH スター: ~140
  • 最初のコミット: 2023年3月19日
  • 約 40 件のコミット、3 件のリリース、3 人の貢献者
  • 言語: Go

Kopilot は、後者の 3 つのプロジェクトの中で Go で書かれた唯一のプロジェクトです。トラブルシューティングと監査の 2 つの機能が含まれます。では、それらの具体的な機能は何でしょうか?

  1. Pending または CrashLoopBackOff 状態でスタックしている Pod があるとします。ここで、 kopilot diagnose コマンドが役立ちます。 AIに助けを求め、AIが提案をし、なぜこのようなことが起こったのかを説明します。

写真

  1. 展開が適切に構成されているかどうかわからない場合kopilot 監査コマンドは同様のアプローチを使用し、ベストプラクティスとセキュリティ要件に照らしてチェックします。

このツールは、OpenAI API トークンと提供された質問を使用して回答します。公式の README には、将来的には他の AI サービスを使用するオプションも利用可能になると記載されています。

残念なことに、4 月初旬以降、プロジェクトへのコミットがまったく行われておらず、これは明らかに心配なことです。

2. コピーロット

  • 「Kubernetes 開発者のための AI 搭載アシスタント」
  • GitHub: https://github.com/avsthiago/kopylot
  • GH スター: ~70
  • 最初のコミット: 2023年3月28日
  • 約 70 件のコミット、5 件のリリース、2 人の貢献者
  • 言語: Python

このツールには同様の監査および診断機能があり、「チャット」コマンドを提供することでこれを実現します。チャットボットのような体験を提供します。英語で特定の操作を尋ねると、それが kubectl コマンドに翻訳されます。印刷されたコマンドが問題ない場合は、その実行を確認できます。 kubectl-gpt で経験したのと同じです。

写真

Kopylot は、任意のコマンドを直接実行できる kubectl の拡張機能である「ctl」コマンドも提供します。この機能の目的は、単なるコマンド kubectl クライアントではなく、Kubernetes を使用するときに Kopylot を最適なアシスタントにすることのようです。

現在、kopylot は OpenAI API キーのみをサポートしており、他の人間の言語では使用できません。これは、レガシー モデルと見なされる te​​xt-davinci-003 GPT-3.5 モデル (ハードコード) に依存しています。ただし、他の LLM モデルの使用のサポートはプロジェクトのロードマップに記載されています。

しかし、最新バージョンのリリース日は 4 月 4 日であるため、これは起こりそうにありません。

3. kubeコパイロット

  • 「OpenAI 搭載の Kubernetes Copilot」
  • GitHub: https://github.com/feiskyer/kube-copilot
  • GH スター: ~70
  • 最初のコミット: 2023年3月25日
  • 約 70 件のコミット、8 件のリリース、1 人の貢献者
  • 言語: Python

Kubernetes Copilot は、マルチツール機能セットを新たなレベルに引き上げます。このマルチツールは、Kubernetes のトラブルシューティング、監査、実行機能に加えて、プロンプトに基づいてマニフェストを生成することもできます (kubectl-ai と同様)。

ちなみに、kube-copilot の監査機能はあなたが思っているよりも強力です。このツールには、K8s リソースの潜在的な問題を明らかにする「分析」コマンド (kopilot 監査と同じ) がある一方、「監査」コマンドもあります。後者は、Trivy スキャナーを使用して、Pod のセキュリティ上の問題を具体的に探します。

kube-copilot のもう 1 つの機能は、コマンド CLI と Web UI の両方を提供していることです。 Web UI は非常にシンプルで、一部のユーザーにとっては非常に好まれる機能である可能性があります。

写真

最後に紹介する CLI 機能は、Google 検索を使用できることです。おそらく、いくつかの問題は ChatGPT よりもこの方法で解決したほうがよいかもしれません。しかし、私の意見では、これは K8s 関連ツールの最も重要な機能ではありません。

AI サポートの場合、kube-copilot は OpenAI API キーまたは Azure OpenAI サービスと共に使用できます。 GPT-3.5 および GPT-4 モデルを使用できるようになります。

このツールは 1 人の開発者によって開発されましたが、コードのコミット履歴は良好です。ただし、現在のところ、公開ロードマップも、ツールがどのように開発されるかを示す問題もありません。

他の

OpenAI をベースにした Kubernetes ツールやサービスは他にもたくさんありますが、以下で簡単に紹介します。

Botkube by Kubeshop は、Slack、Mattermost、Discord、または Microsoft Teams で Kubernetes クラスターを監視およびデバッグするためのメッセージング ボット (別名 ChatOps) です。最近追加された Doctor プラグイン (https://docs.botkube.io/usage/executor/doctor/) は、2 つの異なる方法で AI に接続します。1) チャットボットに直接質問する。 2) エラー イベントのすぐ下に表示される「ヘルプを取得」ボタンを使用します。ボットは、あなたの質問や特定の問題について AI が生成した提案で応答します。この Botkube プラグインを有効にするには、OpenAI API キーが必要です。

写真

metaKube の KubeGPT は CLI ツールではなく、Web ブラウザーで AI と Kubernetes について話し合えるオンライン チャットです。通常の ChatGPT と同様に、質問 (Kubernetes アーキテクチャやベスト プラクティスなど) に回答し、特定の YAML マニフェストを生成することができます。

写真

実際、他の技術的な問題の解決にも役立ちます。たとえば、Nomad に関する情報も提供します。 Ubuntu Linux のインストール手順も説明してくれました。ただし、その中核は依然として Kubernetes であるため、将来の形では他の要求にはあまり役立たないはずです。このサービスは現在ベータ版です。

MagicHappen は PoC オペレーターであり、楽しみと実験のみを目的としています。これは、人間の言語でタスクを記述できる新しい CRD ( kind: MagicHappens ) を定義します (例: 「名前空間を作成してデプロイする」)。オペレーターはこの説明を含む YAML マニフェストを受信すると、それを OpenAI に送信して関連する YAML を取得し、生成されたこのマニフェストをクラスターに適用します。 4 月以降、このプロジェクトに新しいコミットは行われていないことに注意してください。

Kube or Fake は、ChatGPT によって生成された 5 つの Kubernetes 用語を提供する興味深いオンライン サービスです。推測ゲームを通じて正確なサービスを見つけます。

最後に、最近、さまざまな有名なツールに OpenAI を利用した機能が組み込まれました。実際、そのようなツールはすでにたくさん存在しており、この記事ではすべてではなく、いくつかを簡単に紹介するだけです。以下は時系列順に並べたものです。

  • ARMO プラットフォーム: Kubescape をベースに、人間の言語で指定されたリクエストに基づいてカスタム コントロールを生成し、GPT-3 によって処理されます。
  • KubeVela ワークフロー: OpenAI API を使用して Kubernetes リソースの検証が可能 (2023 年 4 月)
  • Monokle: AI 支援による YAML リソース作成を実装します。これにより、AI を使用してプロンプトと検証戦略に基づいて YAML マニフェストを生成できます。 (2023年6月)
  • Portainer: 商用バージョン v2.18.3 で ChatGPT の実験的なサポートを導入し、アプリケーションの展開方法に関するすぐに使える回答を提供します。 (2023年7月)
  • Argo CD: Akuity プラットフォームには AI アシスタントがあります。これは OpenAI API を搭載しており、特定の問題の検出、ログの分析、要求されたアクションの実行、質問への回答に役立ちます。 (2023年7月)

要約する

AIOps は私たちに大きな変化をもたらしました。まだ改善の余地はありますが、オープンソース エコシステムは、Kubernetes の管理者とユーザーに Kubernetes を効率的に使用する多くの方法を提供しています。

  • K8SGPT は、多数の貢献者とユーザーを引き付けたため、最も成功したプロジェクトです。現在はトラブルシューティングに重点を置いていますが、柔軟性と拡張性が非常に高いため、コミュニティが急速に拡大することを期待しています。
  • Slack の AI を使用して K8S の問題に対する解決策を生成し、監視アラートの処理プロセスを簡素化したい場合は、Robusta の ChatGPT ロボットと Kubeshop の Botkube はどちらも ChatOps スタイルの優れた選択肢です。
  • YAML マニフェストの生成を自動化する必要がある場合は、kubectl-ai または kube-copilot を試してください。

現在、AIOps は非常に急速に発展しています。多くの新しいプロジェクトが生まれていることがわかります。同時に、多くのプロジェクトは徐々に人気を失い、最終的には消滅しますが、全体的な傾向としては急速に発展し、クラウド ネイティブ エコシステムの最も重要なコンポーネントの 1 つになりつつあります。

元記事: https://blog.palark.com/chatgpt-tools-for-kubernetes/

<<:  分散アーキテクチャとクラウドネイティブを実装する方法

>>:  ゲーム業界の幹部が語る: クラウド サービスを活用してゲーマーの関心を維持する方法

推薦する

ブランドマーケティングプログラム運用マニュアル

私自身の業務経験や情報をもとにまとめたブランドマーケティング運用マニュアルです。ブランド マーケティ...

職場のSEO専門家は、学習能力、学習意欲、学習能力が優れている必要があります。

ウェブサイトの最適化がこれほど普及した今、当然ながら現在の業界に参入する新人が増えています。最近会社...

Kubernetes での Java サーバーレス関数の最適化

Kubernetes 上でサーバーレス関数を実行する際に、起動が高速化され、メモリ フットプリントが...

百度のニュース - 元記事が再び論争を巻き起こす

はじめに:Lu Songsong のブログ - 独創性は Baidu の支持を得られない宋達達氏のこ...

ハイブリッドクラウドバーストはなぜ発生しなかったのでしょうか?

何年も前にハイブリッド クラウドについて議論されていたとき、クラウド バーストが大流行していました。...

TARS Foundation: オープンソースのマイクロサービス エコシステムの構築

[[318600]]導入 1960 年代と 1970 年代には、ソフトウェア開発者は、通常、メインフ...

Dedecms 個人最適化の概要

dedecms でいくつかのウェブサイトを構築したので、最近いろいろなことを感じています。また、私の...

今後2年間で、アリババクラウドの新たなコンピューティングパワーの20%は自社開発のCPUを使用する予定

11月3日、アリババは2022年雲奇カンファレンスで、自社開発のCPU「易天710」が広く使用されて...

2010年5月18日のBaiduスナップショットの更新日は間違っている

サイトナビゲーションネットワークのリーダーは、Baiduに「中央ラジオテレビ大学の登録電話番号」を入...

Zookeeper における Kafka のデータ構造を完全に説明する図

[[421933]] kafka_2.8.0 より前では、kafka を実行するには依然として zo...

NexusbytesのAMDシリーズの日本向けVPSの簡単なレビュー

Nexusbytes は長年運営されていますが、その人気はここ 1 ~ 2 年でわずかに高まっただけ...

raksmart: シンガポール クラスター サーバー (8C/232 IP)、2*e5-2660/16g メモリ/480gSSD/10M 帯域幅 (cn2+bgp)

raksmart は、ブティック ネットワーク (cn2+bgp) に接続された新しいシンガポール ...

BステーションBブラインドボックス:利益を生むビジネス、「不正」モデル

ビリビリの電子商取引のストーリーがライブストリーミングや動画販売によって継続されるのではなく、会員購...

ハイブリッド クラウド環境における Kubernetes の可観測性を実現するための 6 つの効果的な戦略

ハイブリッド クラウド環境で Kubernetes を観察するには、分散システムの動作とパフォーマン...

ウェブサイトも「休日後症候群」に悩まされる理由について簡単に説明します

長い休暇が終わり、ウェブマスターは仕事に戻りました。多くのウェブマスターはまだ長い休暇から回復してい...