让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

这篇具有很好参考价值的文章主要介绍了让 K8s 更简单!8款你不得不知的 AI 工具-Part 1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

最近,AI 引起了广泛关注,而 Kubernetes 驱动的 DevOps 也不例外。软件工程师是自动化的忠实拥护者,因此针对 Kubernetes 操作员的 AI 驱动工具自然也开始涌现。

 

这些工具大多专为终端 (CLI) 使用而设计。Kubernetes 是容器编排的首选平台,而在 AI 驱动工具的帮助下可以从自动化任务、提高可靠性和提供洞察力等方面来帮助您更好掌握它。

 

OpenAI 是 Kubernetes AIOps 最有前途的 AI 平台之一。它提供了一套开源工具,可用于为 Kubernetes 构建 AI 驱动的解决方案。我们将分成两个 parts 来探讨 OpenAI 的一些开源工具如何帮助您实现 Kubernetes AIOps。

 

概述

Kubernetes 用户不可避免地会遇到一些需要调试和修复的集群问题,以保证其 pod 和服务顺利运行。尤其是云端原生的DevOps 可能在管理容器、微服务和自动扩展功能方面涉及很多复杂问题。GenAI 可以帮助排除故障,并执行一些与 Kubernetes 等平台相关的操作任务。这可能涉及使用自然语言提示来启动、回滚或获取集群的可见性。

 

例如,在 KubeCon + CloudNativeCon 2023 大会上,Kubiya 首次展示了一个生成式 AI 工作流引擎,它能够在 Slack 中解释此类命令。扩展自然语言处理功能可以帮助平台团队创建新的工作流程,从而抽象出云端原生平台工作的复杂性。

 

K8sGPT

K8sGPT 是一个相对较新的开源项目,它使用 AI 模型来解释 Kubernetes 的错误信息并提供集群见解。它已被两个组织用于生产,并已申请成为 CNCF 沙盒项目。

 

其主要功能有:

 

  • 提供 Kubernetes 错误信息的详细情境解释
  • 提供集群洞察
  • 支持多种安装选项
  • 支持不同的 AI 后端

 

K8sGPT 的项目由是同类 CLI 工具中最知名、使用最广泛的一个,其主要命令是 k8sgpt analyze旨在揭示 Kubernetes 集群中的问题。它通过使用 analyzers 来做到这一点。这种 analyzers 定义了每个 Kubernetes 对象的逻辑以及可能遇到的问题。例如,Kubernetes Services 的 analyzers 会检查特定 Services 是否存在、是否有端点,以及端点是否准备就绪。

 

更厉害的在于当您要求 K8sgpt 解释能做些什么——为此,需要运行 k8sgpt analyze --explain 命令。这将要求 AI 为您的具体情况提供说明,并显示出来。这些说明包括排除故障的操作以及具体的 kubectl 命令,您只需复制和粘贴这些命令即可执行。而之所以能做到这一点,是因为 Kubernetes 资源的名称已经就位了。

 

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

 

安装

根据您的偏好和操作系统,有多种安装选项可供选择。您可以在文档的安装部分找到不同的选项。安装 K8sGPT 的前提条件是在 Mac 上安装 Homebrew 或在 Windows 机器上安装 WSL。

 

接下来,您可以运行以下命令:

 

brew tap k8sgpt-ai/k8sgpt 
brew install k8sgpt

 

如要查看 K8sGPT 提供的所有命令,请使用 - help 标志:

 

k8sgpt --help

 

前提条件

后续步骤的前提条件是拥有一个 OpneAI 账户和一个正在运行的 Kubernetes 集群;任何集群,比如 microk8s 或 minikube 都足够了。

 

有了 OpneAI 账户后,您需要去其网站生成一个新的 API 密钥

 

或者,你也可以运行以下命令,K8sGPT 会在你的默认浏览器中打开相同的网站:

 

k8sgpt generate

 

K8sGPT 与 OpenAI 交互时需要此密钥。使用新创建的 API 密钥/令牌授权 K8sGPT:

 

k8sgpt auth add openai 
Enter openai Key: openai added to the AI backend provider list

 

您可以使用以下命令列出您的后端:

 

k8sgpt auth list
Default: 
> openai 
Active: 
> openai 
Unused: 
> localai 
> azureopenai 
> noopai

 

其次,我们将在 Kubernetes 集群中安装恶意部署。该 pod 将进入 CrashLoopBackOff。下面是 YAML:

 

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.14.2
        ports:
        - containerPort: 80
        securityContext:
          readOnlyRootFilesystem: true

 

接下来,我们将为示例应用程序创建一个专用命名空间,并安装 Deployment:

 

kubectl create ns demo 
namespace/demo created
kubectl apply -f ./deployment.yaml -n demo
deployment.apps/nginx-deployment created

 

现在,您将看到演示命名空间中的 pod 标明错误:

 

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

 

如果我们想查看其中一个 pod 的事件,就会显示:

 

Warning  BackOff        3s (x8 over 87s)  kubelet                Back-off restarting failed container

 

因此,我们可以运行 K8sGPT 命令来获取更多有关这些 pod 出错原因的详细信息:

 

k8sgpt analyse

 

这将显示 K8sGPT 在集群中发现的问题:

 

AI Provider: openai

 

若想要获得更多信息以及如何解决问题的建议,我们则可以使用 --explain 标志:

 

k8sgpt analyse --explain
0 demo/nginx-deployment-5f4c7db77b-hq74n(Deployment/nginx-deployment)
- Error: back-off 1m20s restarting failed container=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 container=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 container=nginx pod=nginx-deployment-5f4c7db77b-shkw6_demo(2603f332-3e1c-45da-8080-e34dd6d956ad)

 

kubectl-ai

该项目是一个 kubectl 插件,基于 GTP 生成和应用 Kubernetes Manifests 去生成和应用 Kubernetes 清单。为让其更有趣并以可视化的方式理解,我们将利用 Kubectl + OpenAI。

 

安装

Homebrew:添加到 brew tap 并安装

 

brew tap sozercan/kubectl-ai https://github.com/sozercan/kubectl-ai
brew install kubectl-ai

 

Krew:添加到 krew index再使用

 

kubectl krew index add kubectl-ai https://github.com/sozercan/kubectl-aikubectl 
krew install kubectl-ai/kubectl-ai

 

前提条件

kubectl-ai 需要有效的 Kubernetes 配置和以下条件之一:

 

  • OpenAI API 密钥
  • Azure OpenAI 服务 API 密钥和端点
  • LocalAI

 

对于这些工具,可以使用以下环境变量:

 

export OPENAI_API_KEY=<your OpenAI key>
export OPENAI_DEPLOYMENT_NAME=<your OpenAI deployment/model name. defaults to "gpt-3.5-turbo-0301">
export OPENAI_ENDPOINT=<your OpenAI endpoint, like "https://my-aoi-endpoint.openai.azure.com" or "http://localhost:8080/v1">

 

如果设置了 OPENAI_ENDPOINT 变量,则将使用端点。否则,将使用 OpenAI API。

 

Azure OpenAI 服务不允许在部署名称中使用某些字符,如.。因此,对于 Azure,kubectl-ai 会自动将 gpt-3.5-turbo 替换为 gpt-35-turbo。但是,如果使用的 Azure OpenAI 部署名称与模型名称完全不同,可以设置 AZURE_OPENAI_MAP 环境变量,将模型名称映射到 Azure OpenAI 部署名称。例如:

 

export AZURE_OPENAI_MAP="gpt-3.5-turbo=my-deployment"

 

演示

Nginx Pod 的命令

 

kubectl ai "create an nginx pod"

kubectl ai "create an nginx pod"
✨ Attempting to apply the following manifest:
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx
    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

 

Deployment:选择 "Reprompt" 并输入 "make this into deployment"

 

Reprompt: make this into deployment
✨ Attempting to apply the following manifest:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

 

ReplicaSet

 

Reprompt: Scale to 3 replicas
Reprompt: Scale to 3 replicas
✨ Attempting to apply the following manifest:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

 

KoPylot

 

KoPylot 是一款由 AI 驱动的开源 Kubernetes 助手。其目标是帮助开发人员和 DevOps 工程师轻松管理和监控 Kubernetes 集群

 

功能

 

在当前版本中,KoPylot 有四个主要功能。这些功能可以转化为 kopylot CLI 的子命令。这些子命令是 Audit, Chat, Diagnose 和 Ctl 。现在让我们深入了解一下这些命令。

 

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

 

Audit:Audit 资源,例如 pod、部署和服务。KoPylot 会根据单个资源的清单文件查找漏洞。

 

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

 

Chat:用简单的英语询问 KoPylot 以生成 kubectl 命令。在运行命令之前,您可以查看命令。

 

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

 

Diagnose:您可以使用诊断工具来帮助您调试应用程序的不同组件。诊断命令会为您列出损坏资源的可能修复方法。

 

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

 

Ctl:kubectl 的包装器。传递给 ctl 子命令的所有参数都由 kubectl 解释。

 

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

 

运行原理

目前,KoPylot 的工作方式是从 Kubernetes 资源描述(kubectl describe ...)或清单中提取信息,并将其与提示一起输入 OpenAI 的 Davinci 模型。提示告诉模型如何处理 Kubernetes 资源。

 

提示还负责指导模型如何构建输出。例如,用于 Audit 命令的提示符要求模型将结果输出为包含漏洞及其严重程度的双列 JSON。

 

路线图的目标之一是用内部托管模型取代 OpenAI 模型。这将解决向 OpenAI 服务器发送潜在敏感数据的问题。

 

您可以按以下步骤使用 KoPylot:

 

  • 向 OpenAI 申请一个 API 密钥。
  • 使用以下命令导出密钥
export KOPYLOT_AUTH_TOKEN=
  • 使用 pip 安装 Kopylot:
pip install kopylot
  • 运行 Kopylot
kopylot --help

 

总的来说,KoPylot 是诊断 Kubernetes 工作负载并排除故障的有用工具。它基于网络的聊天界面和 CLI 使其易于使用,适合所有级别的用户

 

Kopilot

Kopilot 是这些项目中唯一一个用 Go 编写的项目。它包括两个功能:故障排除和审计。

 

安装

macOS

 

brew install knight42/tap/kopilot

 

Krew:

 

kubectl krew install kopilot

 

目前,您需要设置两个 ENV 才能运行 Kopilot:

 

  • 设置 KOPILOT_TOKEN 以指定令牌。
  • 设置 KOPILOT_LANG 以指定语言,默认为 English。有效选项包括 ChineseFrenchSpain 等。

 

优势

  • 诊断集群中任何不健康的工作负载,并告诉您原因

 

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

 

  • Audit Kubernetes 资源并查找安全错误配置

 

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

 

想象一下,当您的 Pod 被卡或在 PendingCrashLoopBackOff 的状态时,kopilot diagnose 的命令就会派上用场了。它或将向 AI 寻求帮助,并将结论展示出来,其中还包括可能的原因解释。

 

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

 

并且,kopilot audit命令采用了类似的方法,能根据众所周知的优秀实践和可能的安全错误配置进行检查。该工具将使用您的 OpenAI API 令牌和您选择的语言来回答问题。

 

本篇 Part 1 主要介绍了 K8sGPT、kubectl-ai、KoPylot 和 Kopilot 四款 AI 工具,后续的 Part 2 会延续并介绍更多的工具内容,帮助您简化 K8s 的使用过程,敬请期待!文章来源地址https://www.toymoban.com/news/detail-789936.html

到了这里,关于让 K8s 更简单!8款你不得不知的 AI 工具-Part 1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Host/ KVM/ Docker/ K8s/ OpenStack/ Mesos简单介绍和区别

    Host 是指物理服务器或虚拟机主机,它们可以运行多个虚拟机或容器来提供计算和存储资源。Host 是云计算和容器化技术中的基本组成部分。 KVM 是一种开源虚拟化技术,它可以将一台物理服务器虚拟化为多个虚拟机,每个虚拟机可以运行不同的操作系统和应用程序。KVM 可以提

    2024年02月14日
    浏览(52)
  • K8s(一)Pod资源——Pod介绍、创建Pod、Pod简单资源配额

    目录 Pod概述 pod网络 pod存储 pod和容器对比 创建pod的方式 pod运行方式分类 Pod的创建 Pod的创建过程 通过kubectl run来创建pod 通过yaml文件创建,yaml文件简单写法 Pod简单操作 Pod的标签labels Pod的资源配额resource 测试 Kubernetes Pod | Kubernetes Pod是Kubernetes中的最小调度单元,k8s都是以p

    2024年01月18日
    浏览(58)
  • 如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 3

    在本教程的前两部分,我们分别了解和学习了Prometheus 和 Grafana 的基本概念和使用的前提条件,以及使用 Helm 在 Kubernetes 上安装 Prometheus。   在今天的教程中,我们将为你介绍以下内容:   安装 Grafana; 集成 Prometheus 和 Grafana,Grafana 将使用 Prometheus 作为数据源; 使用 Grafan

    2024年01月22日
    浏览(50)
  • 如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 1

    本系列将分成三个部分,您将学习如何使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana,以及如何在 Grafana 上创建一个简单的控制面板。Prometheus 和 Grafana 是 Kubernetes 最受欢迎的两种开源监控工具。 学习如何使用 Helm 集成这两个工具,使您能够轻松监控 Kubernetes 集群并排除故障

    2024年02月04日
    浏览(37)
  • 如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 2

    在 Part 1 中,我们一起了解了什么是 Prometheus 和 Grafana,以及使用这些工具的前提条件和优势。在本部分,将继续带您学习如何安装 Helm 以及如何使用 Prometheus Helm Charts。   ArtifactHub 为 Helm Chart 提供了公共和私有资源库。我们将使用这些 Helm Chart 来设置 Kubernetes 集群中的 pod 和

    2024年02月03日
    浏览(41)
  • k8s学习笔记(二):k8s的组件介绍

    Master:是 集群的网关和中枢枢纽 ,主要作用: 暴露API接口,跟踪其他服务器的健康状态、以最优方式调度负载,以及编排其他组件之间的通信 。单个的Master节点可以完成所有的功能,但是考虑单点故障的痛点,生产环境中通常要部署多个Master节点,组成Cluster。包括所有的

    2024年02月04日
    浏览(41)
  • 【K8S 云原生】K8S的图形化工具——Rancher

    目录 一、rancher概述 1、rancher概念 2、rancher和K8S的区别: 二、实验 1、安装部署 2、给集群添加监控: 3、创建命名空间: 4、创建deployment: 5、创建service: 6、创建ingress: 7、创建hpa 8、创建PVC 1、rancher概念 rancher实用一个开源的企业级多集群的K8S管理平台 2、rancher和K8S的区别

    2024年01月25日
    浏览(41)
  • k8s简介、虚拟机快速搭建k8s集群、集群管理方式及K8S工作原理和组件介绍

    1.1、部署方式的变迁 传统部署时代: 在物理服务器上运行应用程序 无法为应用程序定义资源边界 导致资源分配问题 例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况, 结果可能导致其他应用程序的性能下降。 一种解决方案是

    2024年02月12日
    浏览(69)
  • 【云原生】k8s组件&架构介绍与K8s最新版部署

          个人主页: 征服bug-CSDN博客 kubernetes专栏: kubernetes_征服bug的博客-CSDN博客  目录 1 集群组件 1.1 控制平面组件(Control Plane Components) 1.2 Node 组件 1.3 插件 (Addons) 2 集群架构详细 3 集群搭建[重点] 3.1 minikube 3.2 裸机安装 集群组件 核心概念 集群安装 集群 cluster : 将同一个

    2024年02月14日
    浏览(47)
  • 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍

    目录 一、Kubernetes 简介 二、Kubernetes 架构 三、Kunbernetes 有哪些核心概念? 1. 集群 Cluster 2. 容器 Container 3. POD 4. 副本集 ReplicaSet 5. 服务 service 6. 发布 Deployment 7. ConfigMap/Secret 8. DaemonSet 9. 核心概念总结 Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌。谷歌早在十几

    2024年02月03日
    浏览(170)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包