Maison > Périphériques technologiques > IA > le corps du texte

Le dépannage est trop ennuyeux, essayez le super pouvoir de GPT

王林
Libérer: 2024-03-14 19:52:14
avant
1204 Les gens l'ont consulté

Lorsque vous utilisez Kubernetes, vous rencontrerez inévitablement des problèmes dans le cluster, qui doivent être débogués et réparés pour garantir que les pods et les services peuvent fonctionner normalement. Que vous soyez débutant ou expert dans la gestion d'environnements complexes, les processus de débogage au sein d'un cluster ne sont pas toujours faciles et peuvent devenir longs et fastidieux. Dans Kubernetes, la clé du diagnostic des problèmes consiste à comprendre les relations entre les composants et la manière dont ils interagissent. Les outils de journalisation et de surveillance sont essentiels à la résolution des problèmes et peuvent vous aider à localiser et à résoudre rapidement les pannes. De plus, une compréhension approfondie de la configuration des ressources Kubernetes et du mécanisme de planification constitue également un élément important pour résoudre les problèmes. Lorsque vous êtes confronté à un problème, assurez-vous d'abord que votre cluster et votre application sont correctement configurés. Localisez ensuite la source du problème en consultant les journaux, les indicateurs de surveillance et les événements. Parfois, le problème peut concerner la configuration du réseau, des problèmes de stockage ou des bogues dans l'application elle-même, qui doivent être soigneusement examinés. Dans un environnement cloud natif, il existe une variété de solutions de débogage parmi lesquelles choisir qui peuvent vous aider à accéder facilement aux informations contenues dans le système. grappe. Cependant, il est important de noter que la plupart des solutions ne fournissent pas d’informations contextuelles complètes.

Dans cet article de blog, je vais vous présenter K8sGPT, un projet qui vise à rendre les super pouvoirs de Kubernetes accessibles à tous.

Scénarios d'application K8sGPTLe dépannage est trop ennuyeux, essayez le super pouvoir de GPTVue d'ensemble

K8sGPT est un projet entièrement open source lancé en avril 2023 par un groupe d'ingénieurs expérimentés de l'écosystème cloud natif. L'idée principale du projet est d'utiliser des modèles d'intelligence artificielle pour fournir des explications détaillées et contextuelles des messages d'erreur de Kubernetes et des informations sur les clusters.

PhotosLe dépannage est trop ennuyeux, essayez le super pouvoir de GPTCe projet a été adopté par deux organisations et appliqué pour devenir un projet bac à sable CNCF. La vision de ce projet est de créer des modèles d'apprentissage automatique orientés tâches pour Kubernetes.

Le projet prend déjà en charge plusieurs options d'installation et différents backends d'IA. Dans cet article, je vais vous montrer comment installer et commencer à utiliser K8sGPT, les outils et opérateurs CLI, et comment K8sGPT prend en charge d'autres intégrations.

Installation

Plusieurs options d'installation sont disponibles en fonction de vos préférences et de votre système d'exploitation. Vous pouvez trouver différentes options dans la section installation de la documentation K8sGPT.

La condition préalable à l'installation de K8sGPT comme décrit ci-dessous est d'installer Homebrew sur un Mac ou WSL sur un ordinateur Windows.

Ensuite, vous pouvez exécuter la commande suivante :

brew tap k8sgpt-ai/k8sgptbrew install k8sgpt
Copier après la connexion
Autres options d'installation

Installation basée sur RPM (RedHat/CentOS/Fedora)

32 bits :

curl -LO https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.3.6/k8sgpt_386.rpmsudo rpm -ivh k8sgpt_386.rpm
Copier après la connexion

64 bits : ee

Installation basée sur DEB (Ubuntu/DEBIAN)

32 bits :

curl -LO https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.3.6/k8sgpt_amd64.rpmsudo rpm -ivh -i k8sgpt_amd64.rpm
Copier après la connexion
E

64 bits :

curl -LO https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.3.6/k8sgpt_386.debsudo dpkg -i k8sgpt_386.deb
Copier après la connexion

Pour vérifier si K8SGPT est installé correctement, vous pouvez vérifier la version d'installation :

curl -LO https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.3.6/k8sgpt_amd64.debsudo dpkg -i k8sgpt_amd64.deb
Copier après la connexion
e

k8sgpt CLI

Pour voir toutes les commandes fournies par K8sGPT, utilisez l'indicateur --help :

k8sgpt versionk8sgpt: 0.3.6 (9c0efe6), built at: unknown
Copier après la connexion

Ensuite, nous devons autoriser le backend AI. Dans cet article, nous utiliserons OpenAI.

Prérequis

Les prérequis pour suivre la section suivante sont d'avoir un compte OpneAI et un cluster Kubernetes en cours d'exécution tel que microk8s ou minikube, ce qui est suffisant.

Après avoir un compte OpneAI, vous devez visiter cette adresse https://platform.openai.com/account/api-keys pour générer une nouvelle clé API

Alternativement, vous pouvez exécuter la commande suivante et K8sGPT sera dans le navigateur par défaut Ouvrez la même adresse :

k8sgpt --help
Copier après la connexion

K8sGPT Cette clé est requise pour interagir avec OpenAI. Autorisez K8sGPT à l'aide de la clé/jeton API nouvellement créé :

k8sgpt generate
Copier après la connexion

Vous pouvez lister vos backends à l'aide de la commande suivante :

k8sgpt auth add openaiEnter openai Key: openai added to the AI backend provider list
Copier après la connexion

Ensuite, nous déploierons un déploiement d'exception dans le cluster Kubernetes, le Pod deviendra l'état CrashLoopBackOff . Voici le YAML :

k8sgpt auth listDefault:> openaiActive:> openaiUnused:> localai> azureopenai> noopai
Copier après la connexion

Ensuite, nous allons créer l'espace de noms de démonstration pour l'exemple d'application et installer le déploiement :

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
Copier après la connexion

Vous verrez maintenant le Pod dans notre espace de noms de démonstration générer une erreur :

Images

Le dépannage est trop ennuyeux, essayez le super pouvoir de GPTSi nous regardons les événements pour l'un des pods, mais que nous ne connaissons pas la cause exacte du problème :

kubectl create ns demonamespace/demo createdkubectl apply -f ./deployment.yaml -n demodeployment.apps/nginx-deployment created
Copier après la connexion

Par conséquent, nous pouvons exécuter la commande K8sGPT pour accéder à plus de détails sur la raison pour laquelle ces pods s'est mal passé :

WarningBackOff 3s (x8 over 87s)kubelet Back-off restarting failed container
Copier après la connexion

Cela nous montrera les problèmes que k8sGPT a trouvés dans le cluster :

k8sgpt analyse
Copier après la connexion

Pour recevoir plus d'informations et des suggestions sur la façon de résoudre le problème, nous pouvons utiliser l'indicateur --explain suivant :

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)
Copier après la connexion

附加功能

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

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

与其他工具的集成

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

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

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

k8sgpt integration listActive:Unused:> trivy
Copier après la connexion

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

k8sgpt integration activate trivy
Copier après la connexion

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

Le dépannage est trop ennuyeux, essayez le super pouvoir de GPT图片

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

❯ k8sgpt filters listActive:> Pod> VulnerabilityReport (integration)Unused:> Deployment> ReplicaSet> Node> Service> Ingress> StatefulSet> CronJob> PersistentVolumeClaim> HorizontalPodAutoScaler> PodDisruptionBudget> NetworkPolicy
Copier après la connexion

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

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

k8sgpt analyse --filter=VulnerabilityReport
Copier après la connexion

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

k8sgpt analyse --filter=VulnerabilityReport --explain
Copier après la connexion

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
Copier après la connexion

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

serviceMonitor:enabled: trueGrafanaDashboard:enabled: true
Copier après la connexion

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

helm install release k8sgpt/k8sgpt-operator -n k8sgpt-operator-system --create-namespace --values values.yaml
Copier après la connexion

在本例中,我们告诉 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
Copier après la connexion

此时,你应该在集群内运行 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>
Copier après la connexion

然后,我们需要配置 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
Copier après la connexion

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

kubectl apply -f k8sgpt-resource.yaml -n k8sgpt-operator-system
Copier après la connexion

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

kubectl get results -n k8sgpt-operator-system
Copier après la connexion

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

Le dépannage est trop ennuyeux, essayez le super pouvoir de GPT从 K8sGPT Operator 查看结果报告

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

kubectl port-forward service/prom-grafana -n prom 3000:80
Copier après la connexion

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

Le dépannage est trop ennuyeux, essayez le super pouvoir de GPTGrafana 中的 K8sGPT 仪表板

参考

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!