Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  Die Fehlerbehebung ist zu nervig. Probieren Sie die Superleistung von GPT aus

Die Fehlerbehebung ist zu nervig. Probieren Sie die Superleistung von GPT aus

王林
王林nach vorne
2024-03-14 19:52:141205Durchsuche

Bei der Verwendung von Kubernetes treten zwangsläufig Probleme im Cluster auf, die debuggt und repariert werden müssen, um sicherzustellen, dass Pods und Dienste normal ausgeführt werden können. Unabhängig davon, ob Sie Anfänger oder Experte im Umgang mit komplexen Umgebungen sind, ist das Debuggen von Prozessen innerhalb eines Clusters nicht immer einfach und kann zeitaufwändig und mühsam werden. In Kubernetes liegt der Schlüssel zur Problemdiagnose im Verständnis der Beziehungen zwischen Komponenten und ihrer Interaktion untereinander. Protokollierungs- und Überwachungstools sind der Schlüssel zur Problemlösung und können Ihnen dabei helfen, Fehler schnell zu lokalisieren und zu beheben. Darüber hinaus ist ein umfassendes Verständnis der Kubernetes-Ressourcenkonfiguration und des Planungsmechanismus ein wichtiger Bestandteil der Problemlösung. Wenn Sie auf ein Problem stoßen, stellen Sie zunächst sicher, dass Ihr Cluster und Ihre Anwendung richtig konfiguriert sind. Suchen Sie dann die Ursache des Problems, indem Sie Protokolle, Überwachungsindikatoren und Ereignisse anzeigen. Manchmal liegt das Problem möglicherweise an der Netzwerkkonfiguration, an Speicherproblemen oder an Fehlern in der Anwendung selbst, die sorgfältig geprüft werden müssen. In einer Cloud-nativen Umgebung stehen verschiedene Debugging-Lösungen zur Auswahl, mit denen Sie problemlos auf Informationen innerhalb der Anwendung zugreifen können Cluster. Es ist jedoch wichtig zu beachten, dass die meisten Lösungen keine vollständigen Kontextinformationen bereitstellen.

In diesem Blogbeitrag stelle ich Ihnen K8sGPT vor, ein Projekt, das darauf abzielt, die Superkräfte von Kubernetes für jedermann verfügbar zu machen.

K8sGPT-AnwendungsszenarienDie Fehlerbehebung ist zu nervig. Probieren Sie die Superleistung von GPT ausÜbersicht

K8sGPT ist ein vollständig Open-Source-Projekt, das im April 2023 von einer Gruppe erfahrener Cloud-Native-Ökosystem-Ingenieure gestartet wurde. Die Kernidee des Projekts besteht darin, mithilfe von Modellen der künstlichen Intelligenz detaillierte und kontextbezogene Erklärungen für Kubernetes-Fehlermeldungen und Cluster-Erkenntnisse bereitzustellen.

BilderDie Fehlerbehebung ist zu nervig. Probieren Sie die Superleistung von GPT ausDieses Projekt wurde von zwei Organisationen übernommen und als CNCF-Sandbox-Projekt beantragt. Die Vision dieses Projekts ist es, aufgabenorientierte Modelle für maschinelles Lernen für Kubernetes zu erstellen.

Das Projekt unterstützt bereits mehrere Installationsoptionen und verschiedene KI-Backends. In diesem Beitrag zeige ich Ihnen, wie Sie K8sGPT, die CLI-Tools und Operatoren installieren und verwenden und wie K8sGPT andere Integrationen unterstützt.

Installation

Je nach Ihren Vorlieben und Ihrem Betriebssystem stehen mehrere Installationsoptionen zur Verfügung. Verschiedene Optionen finden Sie im Installationsabschnitt der K8sGPT-Dokumentation.

Voraussetzung für die Installation von K8sGPT wie unten beschrieben ist die Installation von Homebrew auf einem Mac oder WSL auf einem Windows-Computer.

Als nächstes können Sie den folgenden Befehl ausführen:

brew tap k8sgpt-ai/k8sgptbrew install k8sgpt
Andere Installationsoptionen

RPM-basierte Installation (RedHat/CentOS/Fedora)

32-Bit:

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

64-Bit:

r reee

DEB-basierte Installation (Ubuntu/DEBIAN)

32-Bit:

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

64-Bit:

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

Um zu überprüfen, ob K8SGPT korrekt installiert ist, können Sie die Installationsversion überprüfen:

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

Um alle von K8sGPT bereitgestellten Befehle anzuzeigen, verwenden Sie das Flag --help:

k8sgpt versionk8sgpt: 0.3.6 (9c0efe6), built at: unknown
Als nächstes müssen wir das KI-Backend autorisieren. In diesem Artikel verwenden wir OpenAI.

Voraussetzungen

Die Voraussetzungen für das Befolgen des nächsten Abschnitts sind ein OpneAI-Konto und ein laufender Kubernetes-Cluster wie microk8s oder minikube, was ausreichend ist.

Nachdem Sie ein OpneAI-Konto haben, müssen Sie diese Adresse https://platform.openai.com/account/api-keys besuchen, um einen neuen API-Schlüssel zu generieren

Alternativ können Sie den folgenden Befehl ausführen und K8sGPT wird angezeigt Öffnen Sie im Standardbrowser dieselbe Adresse:

k8sgpt --help
K8sGPT Dieser Schlüssel ist für die Interaktion mit OpenAI erforderlich. Autorisieren Sie K8sGPT mit dem neu erstellten API-Schlüssel/Token:

k8sgpt generate
Sie können Ihre Backends mit dem folgenden Befehl auflisten:

k8sgpt auth add openaiEnter openai Key: openai added to the AI backend provider list
Als nächstes werden wir eine Ausnahmebereitstellung im Kubernetes-Cluster bereitstellen. Der Pod wird in den CrashLoopBackOff-Status versetzt . Hier ist die YAML:

k8sgpt auth listDefault:> openaiActive:> openaiUnused:> localai> azureopenai> noopai
Als nächstes erstellen wir den Demo-Namespace für die Beispielanwendung und installieren die Bereitstellung:

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
Jetzt sehen Sie, dass der Pod in unserem Demo-Namespace einen Fehler auslöst:

BilderDie Fehlerbehebung ist zu nervig. Probieren Sie die Superleistung von GPT ausWenn wir uns die Ereignisse für einen der Pods ansehen, aber die genaue Ursache des Problems nicht kennen:

kubectl create ns demonamespace/demo createdkubectl apply -f ./deployment.yaml -n demodeployment.apps/nginx-deployment created
Daher können wir den Befehl K8sGPT ausführen, um auf weitere Details darüber zuzugreifen, warum diese Pods vorliegen ging schief:

WarningBackOff 3s (x8 over 87s)kubelet Back-off restarting failed container
Dies zeigt uns die Probleme, die k8sGPT im Cluster gefunden hat:

k8sgpt analyse
Um weitere Informationen und Vorschläge zur Lösung des Problems zu erhalten, können wir das folgende --explain-Flag verwenden:

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 在集群中识别的问题数量,你还可以按特定命名空间和工作负载类型进行过滤。

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

与其他工具的集成

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

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

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

k8sgpt integration listActive:Unused:> trivy

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

k8sgpt integration activate trivy

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

Die Fehlerbehebung ist zu nervig. Probieren Sie die Superleistung von GPT aus图片

激活集成后,我们可以通过 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 查看结果报告:

Die Fehlerbehebung ist zu nervig. Probieren Sie die Superleistung von GPT aus从 K8sGPT Operator 查看结果报告

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

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

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

Die Fehlerbehebung ist zu nervig. Probieren Sie die Superleistung von GPT ausGrafana 中的 K8sGPT 仪表板

参考

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

Das obige ist der detaillierte Inhalt vonDie Fehlerbehebung ist zu nervig. Probieren Sie die Superleistung von GPT aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen