ホームページ  >  記事  >  テクノロジー周辺機器  >  トラブルシューティングは面倒なので、GPT のスーパーパワーを試してください

トラブルシューティングは面倒なので、GPT のスーパーパワーを試してください

王林
王林転載
2024-03-14 19:52:141204ブラウズ

Kubernetes を使用すると、必ずクラスター内で問題が発生します。ポッドとサービスが正常に実行できるようにするには、問題をデバッグして修復する必要があります。初心者であっても、複雑な環境を扱う専門家であっても、クラスター内のプロセスのデバッグは必ずしも簡単ではなく、時間がかかり退屈になる可能性があります。 Kubernetes では、問題を診断するための鍵は、コンポーネント間の関係とコンポーネントが相互にどのように相互作用するかを理解することです。ログおよび監視ツールは問題解決の鍵であり、障害を迅速に特定して解決するのに役立ちます。さらに、Kubernetes のリソース構成とスケジューリング メカニズムを深く理解することも、問題解決の重要な部分です。 問題に直面した場合は、まずクラスターとアプリケーションが正しく構成されていることを確認してください。次に、ログ、監視インジケーター、およびイベントを表示して、問題の原因を特定します。問題には、ネットワーク構成、ストレージの問題、またはアプリケーション自体のバグが含まれる場合があり、慎重に検討する必要があります。クラウド ネイティブ環境では、クラスターに簡単にアクセスするのに役立つさまざまなデバッグ ソリューションから選択できます。情報。ただし、ほとんどのソリューションでは完全なコンテキスト情報が提供されないことに注意することが重要です。

このブログ投稿では、Kubernetes のスーパーパワーを誰もが利用できるようにすることを目的としたプロジェクトである K8sGPT について紹介します。

K8sGPT のアプリケーション シナリオトラブルシューティングは面倒なので、GPT のスーパーパワーを試してください概要

K8sGPT は、経験豊富なクラウド ネイティブ エコシステムの専門家エンジニアのグループによって開発された完全なオープンソース プロジェクトです。 2023年4月に発売開始。このプロジェクトの中心となるアイデアは、人工知能モデルを使用して、Kubernetes エラー メッセージとクラスターの洞察について詳細かつ状況に応じた説明を提供することです。

写真トラブルシューティングは面倒なので、GPT のスーパーパワーを試してくださいこのプロジェクトは 2 つの組織によって採用され、CNCF サンドボックス プロジェクトになるように申請されました。このプロジェクトのビジョンは、Kubernetes 用のタスク指向の機械学習モデルを構築することです。

プロジェクトは、複数のインストール オプションとさまざまな人工知能バックエンドをすでにサポートしています。この記事では、K8sGPT、CLI ツールとオペレーターをインストールして使用を開始する方法、および K8sGPT が他の統合をサポートする方法を説明します。

インストール

好みやオペレーティング システムに応じて、さまざまなインストール オプションを使用できます。 K8sGPT ドキュメントのインストール セクションにさまざまなオプションがあります。

以下で説明するように K8sGPT をインストールするための前提条件は、Mac に Homebrew をインストールするか、Windows コンピュータに WSL をインストールすることです。

次に、次のコマンドを実行できます:

brew tap k8sgpt-ai/k8sgptbrew install k8sgpt
その他のインストール オプション

RPM ベースのインストール (RedHat/CentOS/Fedora)

32 ビット:

curl -LO https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.3.6/k8sgpt_386.rpmsudo rpm -ivh k8sgpt_386.rpm

64 ビット:

curl -LO https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.3.6/k8sgpt_amd64.rpmsudo rpm -ivh -i k8sgpt_amd64.rpm

DEB ベースのインストール (Ubuntu/Debian)

32 ビット:

curl -LO https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.3.6/k8sgpt_386.debsudo dpkg -i k8sgpt_386.deb

64 ビット:

curl -LO https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.3.6/k8sgpt_amd64.debsudo dpkg -i k8sgpt_amd64.deb

K8sGPT が正しくインストールされているかどうかを確認するには、インストールされているバージョンを確認できます。

k8sgpt versionk8sgpt: 0.3.6 (9c0efe6), built at: unknown
K8sGPT CLI

K8sGPT が提供するすべてのコマンドを表示するには、--help フラグを使用します:

k8sgpt --help
次に、AI バックエンドを承認する必要があります。この記事では OpenAI を使用します。

前提条件

次のセクションに進むための前提条件は、OpneAI アカウントと、microk8s や minikube などの実行中の Kubernetes クラスターがあれば十分です。

OpneAI アカウントを取得したら、このアドレス https://platform.openai.com/account/api-keys にアクセスして新しい API キーを生成する必要があります

または、次のこともできます。次のコマンドを実行すると、K8sGPT はデフォルトのブラウザで同じアドレスを開きます:

k8sgpt generate
K8sGPT このキーは OpenAI と対話するために必要です。新しく作成した API キー/トークンを使用して K8sGPT を承認します:

k8sgpt auth add openaiEnter openai Key: openai added to the AI backend provider list
次のコマンドを使用してバックエンドを一覧表示できます:

k8sgpt auth listDefault:> openaiActive:> openaiUnused:> localai> azureopenai> noopai
次に、 Kubernetes クラスターに異常な Deployment がデプロイされ、Pod は CrashLoopBackOff 状態になります。 YAML は次のとおりです:

apiVersion: apps/v1kind: Deploymentmetadata:name: nginx-deploymentlabels:app: nginxspec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80securityContext:readOnlyRootFilesystem: true
次に、デモ名前空間を作成し、サンプル アプリケーションのデプロイメントをインストールします:

kubectl create ns demonamespace/demo createdkubectl apply -f ./deployment.yaml -n demodeployment.apps/nginx-deployment created
これで、デモの名前空間内のポッドがエラーをスローしていることがわかります:

Pictureトラブルシューティングは面倒なので、GPT のスーパーパワーを試してくださいポッドの 1 つのイベントを確認すると、問題の具体的な原因がわかりません:

WarningBackOff 3s (x8 over 87s)kubelet Back-off restarting failed container
したがって、K8sGPT コマンドを実行して、これらのポッドが失敗した理由の詳細にアクセスできます:

k8sgpt analyse
これにより、k8sGPT がクラスター内で見つけた問題が表示されます:

AI Provider: openai0 demo/nginx-deployment-5f4c7db77b-hq74n(Deployment/nginx-deployment)- Error: back-off 1m20s restarting failed cnotallow=nginx pod=nginx-deployment-5f4c7db77b-hq74n_demo(7854b793-21b7-4f81-86e5-dbb4113f64f4)1 demo/nginx-deployment-5f4c7db77b-phbq8(Deployment/nginx-deployment)- Error: back-off 1m20s restarting failed cnotallow=nginx pod=nginx-deployment-5f4c7db77b-phbq8_demo(74038531-e362-45a6-a436-cf1a6ea46d8a)2 demo/nginx-deployment-5f4c7db77b-shkw6(Deployment/nginx-deployment)- Error: back-off 1m20s restarting failed cnotallow=nginx pod=nginx-deployment-5f4c7db77b-shkw6_demo(2603f332-3e1c-45da-8080-e34dd6d956ad)
問題の解決方法に関する詳細情報と提案を受け取るには、次のコマンドを使用できます --フラグの説明:

k8sgpt analyse --explain

附加功能

根据你的集群大小和 K8sGPT 在集群中识别的问题数量,你还可以按特定命名空间和工作负载类型进行过滤。

此外,如果你或你的组织担心 OpenAI 或其他后端接收有关你的工作负载的敏感信息,你可以使用--anonymize规避应用的敏感信息。

与其他工具的集成

云原生生态系统中大多数工具的价值源于它们与其他工具的集成程度。

在撰写本文时,K8sGPT 提供了与 Gafana 和 Prometheus 等可观察性工具的轻松集成。此外,还可以为 K8sGPT 编写插件。维护者提供的第一个插件是Trivy,一个一体化的云原生安全扫描器。

你可以使用以下命令列出所有可用的集成:

k8sgpt integration listActive:Unused:> trivy

接下来,我们要激活 Trivy 集成:

k8sgpt integration activate trivy

这将在集群内安装 Trivy Operator(如果尚未安装):

トラブルシューティングは面倒なので、GPT のスーパーパワーを試してください图片

激活集成后,我们可以通过 k8sgpt 过滤器,使用 Trivy 创建的漏洞报告作为 K8sGPT 分析的一部分:

❯ k8sgpt filters listActive:> Pod> VulnerabilityReport (integration)Unused:> Deployment> ReplicaSet> Node> Service> Ingress> StatefulSet> CronJob> PersistentVolumeClaim> HorizontalPodAutoScaler> PodDisruptionBudget> NetworkPolicy

过滤器对应于 k8sgpt 代码中的特定分析器。分析器仅查看相关信息,例如最关键的漏洞。

要使用 VulnerabilityReport 过滤器,请使用以下命令:

k8sgpt analyse --filter=VulnerabilityReport

(FIXME)与之前类似,我们也可以要求 K8sGPT 对扫描提供进一步的解释:

k8sgpt analyse --filter=VulnerabilityReport --explain

K8sGPT Operator

虽然 CLI 工具为集群管理员提供了对其基础设施和工作负载执行即席扫描的功能,但 K8sGPT Operator 在集群中全天候 (24/7) 运行。它是 Kubernetes 原生的,这意味着它作为 Kubernetes 自定义资源运行,并生成作为 YAML 清单存储在集群中的报告。

要安装 Operator,请按照以下命令进行操作:

helm repo add k8sgpt https://charts.k8sgpt.ai/helm repo updatehelm install release k8sgpt/k8sgpt-operator -n k8sgpt-operator-system --create-namespace

如果你想将 K8sGPT 与 Prometheus 和 Grafana 集成,你可以通过向上面的安装提供values.yaml 清单来使用略有不同的安装:

serviceMonitor:enabled: trueGrafanaDashboard:enabled: true

然后安装 Operator 或更新现有安装:

helm install release k8sgpt/k8sgpt-operator -n k8sgpt-operator-system --create-namespace --values values.yaml

在本例中,我们告诉 K8sGPT 还安装一个 ServiceMonitor,它将扫描报告中的指标发送到 Prometheus,并为 K8sGPT 创建一个仪表板。如果你使用了此安装,则还需要安装 kube-prometheus-stack Helm Chart 才能访问 Grafana 和 Prometheus。这可以通过以下命令来完成:

helm repo add prometheus-community https://prometheus-community.github.io/helm-chartshelm repo updatehelm install prom prometheus-community/kube-prometheus-stack -n k8sgpt-operator-system --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false

此时,你应该在集群内运行 K8sGPT Operator 和 Prometheus Stack Helm Chart(也是 Kubernetes Operator)。

与我们需要向 CLI 提供 OpenAI API 密钥的方式类似,我们需要使用 API 密钥创建 Kubernetes 密钥。为此,请使用与之前相同的密钥,或者在你的 OpenAI 帐户上生成一个新密钥。

要生成 Kubernetes 密钥,请将你的 OpenAI 密钥粘贴到以下命令中:

export OPENAI_TOKEN=<your api key here>kubectl create secret generic k8sgpt-sample-secret --from-literal=openai-api-key=$OPENAI_TOKEN -n k8sgpt-operator-system</your>

然后,我们需要配置 K8sGPT Operator 以了解要使用哪个版本的 K8sGPT 以及哪个 AI 后端:

apiVersion: core.k8sgpt.ai/v1alpha1kind: K8sGPTmetadata:name: k8sgpt-samplespec:model: gpt-3.5-turbobackend: openainoCache: falseversion: v0.3.2enableAI: truesecret:name: k8sgpt-sample-secretkey: openai-api-key

现在,我们需要将此文件应用到我们的 K8sGPT 集群命名空间:

kubectl apply -f k8sgpt-resource.yaml -n k8sgpt-operator-system

几秒钟内,Operator 将创建新结果:

kubectl get results -n k8sgpt-operator-system

以下是不同命令的屏幕截图,你可以按照这些命令从 K8sGPT Operator 查看结果报告:

トラブルシューティングは面倒なので、GPT のスーパーパワーを試してください从 K8sGPT Operator 查看结果报告

最后,我们将看一下 Grafana 仪表板。端口转发 Grafana 服务以通过 localhost 访问它:

kubectl port-forward service/prom-grafana -n prom 3000:80

打开 localhost:3000,然后导航到 Dashboards>K8sGPT Overview,然后你将看到包含结果的仪表板:

トラブルシューティングは面倒なので、GPT のスーパーパワーを試してくださいGrafana 中的 K8sGPT 仪表板

参考

  1. 1. https://k8sgpt.ai/
  2. 2. https://docs.k8sgpt.ai/
  3. 3. https://github.com/k8sgpt-ai

以上がトラブルシューティングは面倒なので、GPT のスーパーパワーを試してくださいの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。