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

该架构显示了以下工作流:
开发人员通过与堡垒主机的安全连接来访问环境。此 Amazon EC2 实例充当安全入口点,包含 k8sGpt 命令行界面 (CLI) 安装和必需的配置。
堡垒主机配置了特定 IAM 角色,可与 Amazon EKS 集群和 Amazon Bedrock 端点建立安全连接。K8sGPT 已安装并配置到堡垒主机上,可执行 Kubernetes 集群分析。
Amazon EKS 管理 Kubernetes 控制面板和 Worker 节点,从而为 K8sGPT 分析提供目标环境。该服务可在虚拟私有云(VPC)内跨多个可用区运行,而这有助于提供高可用性和弹性。Amazon EKS 通过 Kubernetes API 提供运营数据,从而实现全面的集群分析。
k8sGPT 向 Amazon Bedrock 发送分析数据,后者为自然语言处理提供 Claude v2 基础模型(FM)。该服务可处理 k8sGPT 分析以生成人类可读的解释,并根据已发现的问题提供详细的补救建议。Amazon Bedrock 是一种无服务器人工智能服务,具有高可用性和可扩展性。
注意
在整个工作流中,IAM 通过角色和策略控制组件之间的访问权限,进而管理堡垒主机、Amazon EKS 和 Amazon Bedrock 交互的身份验证。IAM 实现了最低权限原则,并在整个架构中实现安全的跨服务通信。
自动化和扩展
K8sGPT 操作可以通过各种 AWS 服务 工具在多个 Amazon EKS 集群中实现自动化和扩展。该解决方案支持使用 Jenkins、Actions
工具
AWS 服务
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 Blog
AWS 文档
Amazon Cognito 入门(Amazon 文档)
IAM 中的安全最佳实践(IAM 文档)
其他资源