本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过 K8sGPT 和 Amazon Bedrock 集成,实施人工智能驱动的 Kubernetes 诊断和故障排除
Muskan. 的 Ishwar Chauthaiwale 和亚马逊 Web Services 的 Prafful Gupta
摘要
此模式演示了如何通过将 k8sGPT 与 Amazon Bedrock 上提供的 Anthropic Claude v2 模型集成来实现人工智能驱动的 Kubernetes 诊断和故障排除。该解决方案通过安全的堡垒主机架构为 Kubernetes 集群问题提供了自然语言分析和修复步骤。通过将 K8sGPT Kubernetes 专业知识与 Amazon Bedrock 的高级语言功能相结合 DevOps ,团队可以快速识别和解决集群问题。借助这些功能,可以将平均解决问题的时间 (MTTR) 缩短多达 50%。
这种云原生模式利用亚马逊 Elastic Kubernetes Service(亚马逊 EKS)进行 Kubernetes 管理。该模式通过适当的 AWS Identity and Access Management (IAM) 角色和网络隔离来实现安全最佳实践。对于希望通过人工智能帮助简化 Kubernetes 操作并增强故障排除能力的组织来说,该解决方案特别有价值。
先决条件和限制
先决条件
AWS 账户 具有适当权限的活跃用户
Amazon EKS 集群
具有所需安全组设置的堡垒主机
限制
K8sGPT 分析受到 Claude v2 模型上下文窗口大小的限制。
Amazon Bedrock API 的速率限制取决于您的账户配额。
有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅按地区划分的AWS 服务
。有关特定终端节点,请参阅服务终端节点和配额,然后选择服务的链接。
产品版本
亚马逊 EKS 版本 1.31 或更高版本
亚马逊 Bedrock 上的 Claude 2 模型
架构
下图显示了使用与 Amazon Bedrock 集成的 k8sGPT 进行人工智能驱动的 Kubernetes 诊断架构。 AWS Cloud

该架构显示了以下工作流程:
开发人员通过与堡垒主机的安全连接来访问环境。此 Amazon EC2 实例充当安全入口点,包含 k8sGpt 命令行界面 (CLI) 安装和必需的配置。
堡垒主机配置了特定 IAM 角色,可与 Amazon EKS 集群和 Amazon Bedrock 终端节点建立安全连接。在堡垒主机上安装和配置 k8sGPT 以执行 Kubernetes 集群分析。
Amazon EKS 管理 Kubernetes 控制平面和工作节点,为 k8sGPT 分析提供目标环境。该服务跨虚拟私有云 (VPC) 内的多个可用区运行,这有助于提供高可用性和弹性。Amazon EKS 通过 Kubernetes API 提供运营数据,从而实现全面的集群分析。
k8sGPT 向 Amazon Bedrock 发送分析数据,后者为自然语言处理提供 Claude v2 基础模型 (FM)。该服务处理 k8sGPT 分析以生成人类可读的解释,并根据已发现的问题提供详细的补救建议。Amazon Bedrock 作为一种无服务器 AI 服务运行,具有高可用性和可扩展性。
注意
在整个工作流程中,IAM 通过角色和策略控制组件之间的访问权限,管理堡垒主机、Amazon EKS 和 Amazon Bedrock 交互的身份验证。IAM 实现了最低权限原则,并在整个架构中实现安全的跨服务通信。
自动化和扩缩
K8sGPT 操作可以通过各种 AWS 服务 工具在多个 Amazon EKS 集群中实现自动化和扩展。该解决方案支持使用 Jenkins、Actions
工具
Amazon Web Services
AWS Command Line Interface (AWS CLI) 是一个开源工具,可帮助您 AWS 服务 通过命令行 shell 中的命令进行交互。
亚马逊 Elastic Kubernetes Service(亚马逊 EKS)可帮助你在上面运行 AWS Kubernetes,而无需安装或维护自己的 Kubernetes 控制平面或节点。
AWS Identity and Access Management (IAM) 通过控制谁经过身份验证并有权使用 AWS 资源,从而帮助您安全地管理对资源的访问权限。
其他工具
k8sGPT
是一款开源的人工智能驱动工具,可改变 Kubernetes 的管理。它充当虚拟站点可靠性工程 (SRE) 专家,自动扫描、诊断和排除 Kubernetes 集群问题。管理员可以使用自然语言与 k8sGPT 进行交互,并获得有关集群状态、Pod 崩溃和服务故障的清晰、可操作的见解。该工具的内置分析器可以检测各种问题,从组件配置错误到资源限制,并提供 easy-to-understand解释和解决方案。
最佳实践
通过使用 AWS Systems Manager Session Manager 堡垒主机访问来实现安全的访问控制。
确保 K8sGPT 身份验证使用权限最低的专用 IAM 角色进行 Amazon Bedrock 和 Amazon EKS 交互。有关更多信息,请参阅 IAM 文档中的授予最低权限和安全最佳实践。
配置资源标记,启用 Amazon CloudWatch 日志记录以进行审计跟踪,并对敏感信息实施数据匿名化
。 保持 k8sGPT 配置的定期备份,同时在非高峰时段设置自动扫描计划,以最大限度地减少对操作的影响。
操作说明
Task | 描述 | 所需技能 |
---|---|---|
将 Amazon Bedrock 设为 k8sGpt 的人工智能后端提供商。 | 要将 Amazon Bedrock 设置为 k8sGpt 的人工智能后端提供
示例命令用 要检查
以下是此命令的预期输出示例:
| AWS DevOps |
Task | 描述 | 所需技能 |
---|---|---|
查看可用过滤器列表。 | 要查看所有可用过滤器的列表,请使用以下 AWS CLI 命令:
以下是此命令的预期输出示例:
| AWS DevOps |
使用过滤器扫描特定命名空间中的 Pod。 | 此命令对于有针对性地调试 Kubernetes 集群中的特定 pod 问题非常有用,它使用 Amazon Bedrock AI 功能来分析和解释它发现的问题。 要使用过滤器扫描特定命名空间中的 pod,请使用以下 AWS CLI 命令:
以下是此命令的预期输出示例:
| AWS DevOps |
使用筛选器扫描特定命名空间中的部署。 | 此命令对于识别和解决特定于部署的问题非常有用,尤其是在实际状态与所需状态不匹配时。 要使用筛选器扫描特定命名空间中的部署,请使用以下 AWS CLI 命令:
以下是此命令的预期输出示例:
| AWS DevOps |
使用过滤器扫描特定命名空间中的节点。 | 要使用筛选器扫描特定命名空间中的节点,请使用以下 AWS CLI 命令:
以下是此命令的预期输出示例:
| AWS DevOps |
Task | 描述 | 所需技能 |
---|---|---|
获取详细输出。 | 要获得详细输出,请使用以下 AWS CLI 命令:
以下是此命令的预期输出示例:
| AWS DevOps |
检查有问题的 pod。 | 要检查是否有特定问题的 pod,请使用以下 AWS CLI 命令:
以下是此命令的预期输出示例:
| AWS DevOps |
获取特定于应用程序的见解。 | 在以下情况下,此命令特别有用:
要获得特定于应用程序的见解,请使用以下命令:
以下是此命令的预期输出示例:
|
相关资源
AWS 博客
AWS 文档
开始使用亚马逊 EKS(亚马逊 EKS 文档)
IAM 中的安全最佳实践(IAM 文档)
其他资源