>  기사  >  기술 주변기기  >  문제 해결은 너무 귀찮습니다. GPT의 강력한 기능을 사용해 보세요.

문제 해결은 너무 귀찮습니다. GPT의 강력한 기능을 사용해 보세요.

王林
王林앞으로
2024-03-14 19:52:141205검색

Kubernetes를 사용하면 필연적으로 클러스터에 문제가 발생하게 되는데, Pod와 서비스가 정상적으로 실행될 수 있도록 디버깅하고 복구해야 합니다. 복잡한 환경을 다루는 초보자이든 전문가이든 관계없이 클러스터 내의 디버깅 프로세스는 항상 쉬운 것은 아니며 시간이 많이 걸리고 지루할 수 있습니다. Kubernetes에서 문제 진단의 핵심은 구성 요소 간의 관계와 구성 요소가 서로 상호 작용하는 방식을 이해하는 것입니다. 로깅 및 모니터링 도구는 문제 해결의 핵심이며 오류를 신속하게 찾아 해결하는 데 도움이 될 수 있습니다. 또한, Kubernetes 리소스 구성 및 스케줄링 메커니즘에 대한 심층적인 이해도 문제 해결에 중요한 부분입니다. 문제가 발생하면 먼저 클러스터와 애플리케이션이 올바르게 구성되었는지 확인하세요. 그런 다음 로그, 모니터링 표시기 및 이벤트를 확인하여 문제의 원인을 찾으십시오. 때로는 문제에 네트워크 구성, 스토리지 문제 또는 애플리케이션 자체의 버그가 포함될 수 있으며, 이는 신중하게 고려해야 합니다. 클라우드 네이티브 환경에서는 선택할 수 있는 다양한 디버깅 솔루션이 있어 내부 정보에 쉽게 액세스할 수 있습니다. 무리. 그러나 대부분의 솔루션은 완전한 상황 정보를 제공하지 않는다는 점에 유의하는 것이 중요합니다.

이 블로그 게시물에서는 Kubernetes의 강력한 기능을 모든 사람이 사용할 수 있도록 하는 것을 목표로 하는 프로젝트인 K8sGPT를 소개하겠습니다.

K8sGPT 애플리케이션 시나리오문제 해결은 너무 귀찮습니다. GPT의 강력한 기능을 사용해 보세요.개요

K8sGPT는 숙련된 클라우드 네이티브 생태계 엔지니어 그룹이 2023년 4월에 시작한 완전 오픈 소스 프로젝트입니다. 이 프로젝트의 핵심 아이디어는 인공 지능 모델을 사용하여 Kubernetes 오류 메시지 및 클러스터 통찰력에 대한 상세하고 상황에 맞는 설명을 제공하는 것입니다.

Pictures문제 해결은 너무 귀찮습니다. GPT의 강력한 기능을 사용해 보세요.이 프로젝트는 두 기관에 의해 채택되어 CNCF 샌드박스 프로젝트로 적용되었습니다. 이 프로젝트의 비전은 Kubernetes용 작업 중심 머신 러닝 모델을 구축하는 것입니다.

이 프로젝트는 이미 여러 설치 옵션과 다양한 AI 백엔드를 지원합니다. 이 게시물에서는 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 -bit:

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

64 -bit:

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
e
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 클러스터에 예외 배포를 배포합니다. 포드는 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
이제 데모 네임스페이스의 Pod에서 오류가 발생하는 것을 볼 수 있습니다.

그림문제 해결은 너무 귀찮습니다. GPT의 강력한 기능을 사용해 보세요.포드 중 하나에 대한 이벤트를 살펴봤지만 문제의 정확한 원인을 알 수 없는 경우:

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)
문제 해결 방법에 대한 추가 정보와 제안을 받으려면 다음 --explain 플래그를 사용할 수 있습니다:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제