六合彩AI預測賽後檢討!邊個模型預測最叻? 每次攪珠當晚10:30更新免費睇!

AI搞掂EKS故障:Bedrock多重代理自動化救星!

Ai

🎬 YouTube Premium 家庭 Plan成員一位 只需
HK$148/年

不用提供密碼、不用VPN、無需轉區
直接升級你的香港帳號 ➜ 即享 YouTube + YouTube Music 無廣告播放


立即升級 🔗

自動化Amazon EKS故障排除的Amazon Bedrock代理工作流程

隨著組織擴大其Amazon Elastic Kubernetes Service(Amazon EKS)部署,平台管理員面臨著在有效管理多租戶集群方面越來越多的挑戰。調查Pod故障、解決資源限制和修正配置錯誤等任務,可能會消耗大量時間和精力。與其花費寶貴的工程時間手動解析日誌、追蹤指標和實施修正,團隊應該專注於推動創新。現在,借助生成式AI的力量,您可以改變Kubernetes操作。通過實施智能集群監控、模式分析和自動修復,您可以顯著減少識別平均時間(MTTI)和解決平均時間(MTTR)以處理常見集群問題。

在AWS re:Invent 2024上,我們宣布了Amazon Bedrock的多代理協作能力(預覽)。通過多代理協作,您可以構建、部署和管理多個AI代理,協同完成需要專業技能的複雜多步任務。由於故障排除EKS集群涉及從多個可觀察信號中獲取見解,並通過持續集成和部署(CI/CD)管道應用修正,因此多代理工作流程可以幫助運營團隊簡化EKS集群的管理。工作流程管理代理可以與單獨的代理集成,這些代理與個別可觀察信號和CI/CD工作流程進行交互,根據用戶提示協調和執行任務。

在這篇文章中,我們展示了如何協調多個Amazon Bedrock代理,以創建一個複雜的Amazon EKS故障排除系統。通過啟用專業代理之間的協作——從K8sGPT獲取見解,並通過ArgoCD框架執行操作,您可以構建一個全面的自動化系統,識別、分析和解決集群問題,幾乎不需要人工干預。

解決方案概述

該架構由以下核心組件組成:

– **Amazon Bedrock協作代理**:協調工作流程並保持上下文,同時將用戶提示路由到專業代理,管理多步操作和代理交互。
– **Amazon Bedrock K8sGPT代理**:通過K8sGPT的Analyze API評估集群和Pod事件,以檢查安全問題、配置錯誤和性能問題,並以自然語言提供修復建議。
– **Amazon Bedrock ArgoCD代理**:通過ArgoCD管理基於GitOps的修復,處理回滾、資源優化和配置更新。

以下圖示說明了解決方案架構。

前提條件

您需要具備以下前提條件:

1. AWS命令行界面(AWS CLI)版本2。安裝說明請參考《安裝或更新到最新版本的AWS CLI》。
2. 一個EKS集群。
3. helm。
4. Kubectl。
5. Amazon Bedrock模型訪問(在本文章中,我們使用Anthropic Claude 3.5 Sonnet v1)在部署的AWS區域。
6. 下載隨附的AWS CloudFormation模板。該模板依賴於從美國東部(維吉尼亞州北部)us-east-1 AWS區域的Amazon Simple Storage Service(Amazon S3)存儲桶下載資源。因此,它僅限於在us-east-1區域運行。

設置Amazon EKS集群與K8sGPT和ArgoCD

我們開始安裝和配置EKS集群上的K8sGPT運營商和ArgoCD控制器。

K8sGPT運營商將幫助啟用AI驅動的集群問題分析和故障排除。例如,它可以自動檢測並建議修復配置錯誤的部署,例如識別和解決Pod中的資源限制問題。

ArgoCD是一個聲明式的GitOps持續交付工具,通過將期望的應用程序狀態與Git存儲庫中的定義保持同步,自動化應用程序的部署。

Amazon Bedrock代理作為我們架構中的智能決策者,分析K8sGPT檢測到的集群問題。在確定根本原因後,代理通過ArgoCD的GitOps引擎協調修正行動。這種強大的集成意味著當檢測到問題(無論是配置錯誤的部署、資源限制還是擴展問題)時,代理可以自動與ArgoCD集成以提供必要的修復。然後,ArgoCD將這些更改提取並與您的EKS集群同步,創造出真正的自我修復基礎設施。

創建Amazon EKS中的必要命名空間:
“`bash
kubectl create ns helm-guestbook
kubectl create ns k8sgpt-operator-system
“`

添加k8sgpt Helm存儲庫並安裝運營商:
“`bash
helm repo add k8sgpt https://charts.k8sgpt.ai/
helm repo update
helm install k8sgpt-operator k8sgpt/k8sgpt-operator
–namespace k8sgpt-operator-system
“`

您可以通過輸入以下命令來驗證安裝:
“`bash
kubectl get pods -n k8sgpt-operator-system
“`

在運營商部署後,您可以配置K8sGPT資源。這個自定義資源定義(CRD)將具有大型語言模型(LLM)配置,將有助於AI驅動的集群問題分析和故障排除。K8sGPT支持多種後端,以幫助進行AI驅動的分析。在本文章中,我們使用Amazon Bedrock作為後端,使用Anthropic的Claude V3作為LLM。

您需要創建Pod身份,以便提供EKS集群訪問其他AWS服務的權限,使用Amazon Bedrock:
“`bash
eksctl create podidentityassociation –cluster PetSite –namespace k8sgpt-operator-system –service-account-name k8sgpt –role-name k8sgpt-app-eks-pod-identity-role –permission-policy-arns arn:aws:iam::aws:policy/AmazonBedrockFullAccess –region $AWS_REGION
“`

配置K8sGPT CRD:
“`bash
cat < k8sgpt.yaml
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
name: k8sgpt-bedrock
namespace: k8sgpt-operator-system
spec:
ai:
enabled: true
model: anthropic.claude-v3
backend: amazonbedrock
region: us-east-1
credentials:
secretRef:
name: k8sgpt-secret
namespace: k8sgpt-operator-system
noCache: false
repository: ghcr.io/k8sgpt-ai/k8sgpt
version: v0.3.48
EOF
“`

“`bash
kubectl apply -f k8sgpt.yaml
“`

驗證設置以確認k8sgpt-bedrock Pod運行成功:
“`bash
kubectl get pods -n k8sgpt-operator-system
“`

現在您可以配置ArgoCD控制器:
“`bash
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
kubectl create namespace argocd
helm install argocd argo/argo-cd
–namespace argocd
–create-namespace
“`

驗證ArgoCD安裝:
“`bash
kubectl get pods -n argocd
“`

修補argocd服務以具有外部負載平衡器:
“`bash
kubectl patch svc argocd-server -n argocd -p ‘{“spec”: {“type”: “LoadBalancer”}}’
“`

您現在可以使用以下負載平衡器端點和管理用戶的憑據訪問ArgoCD UI:
“`bash
kubectl get svc argocd-server -n argocd
“`

檢索ArgoCD UI的憑據:
“`bash
export argocdpassword=`kubectl -n argocd get secret argocd-initial-admin-secret
-o jsonpath=”{.data.password}” | base64 -d`

echo ArgoCD admin password – $argocdpassword
“`

將憑據推送到AWS Secrets Manager:
“`bash
aws secretsmanager create-secret
–name argocdcreds
–description “Credentials for argocd”
–secret-string “{“USERNAME”:”admin”,”PASSWORD”:”$argocdpassword”}”
“`

在ArgoCD中配置一個示例應用:
“`bash
cat < argocd-application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: helm-guestbook
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/awsvikram/argocd-example-apps
targetRevision: HEAD
path: helm-guestbook
destination:
server: https://kubernetes.default.svc
namespace: helm-guestbook
syncPolicy:
automated:
prune: true
selfHeal: true
EOF
“`

“`bash
kubectl apply -f argocd-application.yaml
“`

K8sGPT分析新創建的Pods需要一些時間。為了使其立即生效,請重啟在k8sgpt-operator-system命名空間中創建的Pods。可以通過輸入以下命令重啟Pods:
“`bash
kubectl -n k8sgpt-operator-system rollout restart deploy
“`

設置Amazon Bedrock代理以支持K8sGPT和ArgoCD

我們使用CloudFormation堆棧在美國東部(維吉尼亞州北部)區域部署各個代理。當您部署CloudFormation模板時,將部署多個資源(將產生AWS資源使用的費用)。

使用以下參數來設定CloudFormation模板:

– EnvironmentName:部署名稱(EKSBlogSetup)
– ArgoCD_LoadBalancer_URL:提取ArgoCD負載平衡器URL:
“`bash
kubectl get service argocd-server -n argocd -ojsonpath=”{.status.loadBalancer.ingress[0].hostname}”
“`

– AWSSecretName:用於存儲ArgoCD憑據的Secrets Manager秘密名稱

該堆棧創建以下AWS Lambda函數:

– -LambdaK8sGPTAgent-
– -RestartRollBackApplicationArgoCD-
– -ArgocdIncreaseMemory-

該堆棧創建以下Amazon Bedrock代理:

– ArgoCDAgent,具有以下操作組:
– argocd-rollback
– argocd-restart
– argocd-memory-management

– K8sGPTAgent,具有以下操作組:
– k8s-cluster-operations

– CollaboratorAgent

該堆棧輸出以下內容,並與以下代理相關聯:

– ArgoCDAgent
– K8sGPTAgent
– LambdaK8sGPTAgentRole,與處理EKS集群上K8sGPT代理交互的Lambda函數相關聯的AWS Identity and Access Management(IAM)角色Amazon資源名稱(ARN)。該角色ARN將在配置過程的後期階段需要。
– K8sGPTAgentAliasId,K8sGPT Amazon Bedrock代理別名的ID
– ArgoCDAgentAliasId,ArgoCD Amazon Bedrock代理別名的ID
– CollaboratorAgentAliasId,協作Amazon Bedrock代理別名的ID

為K8sGPT Amazon Bedrock代理分配適當的權限,以便其訪問EKS集群

要使K8sGPT Amazon Bedrock代理能夠訪問EKS集群,您需要使用Amazon EKS訪問管理API配置適當的IAM權限。此配置分為兩步:首先,為Lambda函數的執行角色創建訪問條目(您可以在CloudFormation模板輸出部分找到),然後關聯AmazonEKSViewPolicy,以授予對集群的只讀訪問權限。這一配置確保K8sGPT代理擁有必要的權限來監控和分析EKS集群資源,同時保持最低特權原則。

為Lambda函數的執行角色創建訪問條目
“`bash
export CFN_STACK_NAME=EKS-Troubleshooter
export EKS_CLUSTER=PetSite

export K8SGPT_LAMBDA_ROLE=`aws cloudformation describe-stacks –stack-name $CFN_STACK_NAME –query “Stacks[0].Outputs[?OutputKey==’LambdaK8sGPTAgentRole’].OutputValue” –output text`

aws eks create-access-entry
–cluster-name $EKS_CLUSTER
–principal-arn $K8SGPT_LAMBDA_ROLE
“`

將EKS視圖策略與訪問條目關聯
“`bash
aws eks associate-access-policy
–cluster-name $EKS_CLUSTER
–principal-arn $K8SGPT_LAMBDA_ROLE
–policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy
–access-scope type=cluster
“`

驗證Amazon Bedrock代理。CloudFormation模板添加所有三個所需代理。要查看代理,請轉到Amazon Bedrock控制台,在導航窗格中選擇代理,如下圖所示。

使用Amazon Bedrock代理工作流程執行Amazon EKS故障排除

現在,測試解決方案。我們探索以下兩種情況:

1. 代理協調K8sGPT代理提供Pod故障的根本原因見解。
2. 協作代理與ArgoCD代理協調以提供響應。

代理協調K8sGPT代理提供Pod故障的根本原因見解

在本節中,我們檢查一個名為memory-demo的示例應用的故障警報。我們對問題的根本原因感興趣。我們使用以下提示:“我們收到了memory-demo應用的故障警報。請幫助我們找出問題的根本原因。”

該代理不僅指出了根本原因,還進一步提出了潛在的修復措施,在這種情況下,增加應用的內存資源。

協作代理協調ArgoCD代理提供響應

對於這種情況,我們從上一個提示繼續。我們認為應用未提供足夠的內存,應增加內存以永久解決問題。我們還可以告訴應用在ArgoCD UI中處於不健康狀態,如下圖所示。

現在讓我們增加內存,如下圖所示。

該代理與argocd_operations Amazon Bedrock代理進行了交互,並能夠成功增加內存。在ArgoCD UI中可以推斷出相同的情況。

清理

如果您決定停止使用該解決方案,請完成以下步驟:

1. 要刪除使用AWS CloudFormation部署的相關資源:
– 在AWS CloudFormation控制台中,選擇導航窗格中的堆棧。
– 找到您在部署過程中創建的堆棧(您賦予了名稱)。
– 選擇該堆棧並選擇刪除。

2. 刪除如果您專門為此實施創建的EKS集群。

結論

通過協調多個Amazon Bedrock代理,我們展示了如何構建一個AI驅動的Amazon EKS故障排除系統,簡化Kubernetes操作。這種K8sGPT分析與ArgoCD部署自動化的集成展示了當專業AI代理與現有DevOps工具相結合時的強大可能性。儘管這一解決方案代表了自動化Kubernetes操作的進步,但重要的是要記住,對於複雜情況和戰略決策,人類的監督仍然是有價值的。

隨著Amazon Bedrock及其代理能力的持續發展,我們預計會有更多複雜的協作可能性。您可以擴展此解決方案以納入其他工具、指標和自動化工作流,以滿足組織的具體需求。

要了解有關Amazon Bedrock的更多信息,請參考以下資源:

– GitHub repo: Amazon Bedrock Workshop
– Amazon Bedrock User Guide
– Workshop: GenAI for AWS Cloud Operations
– Workshop: Using generative AI on AWS for diverse content types
– 從Amazon Managed Service for Prometheus獲取見解,使用Amazon Bedrock提供自然語言支持。

作者介紹

Vikram Venkataraman是亞馬遜網絡服務(AWS)的首席專家解決方案架構師。他幫助客戶現代化、擴展並採納最佳實踐,以應對其容器化工作負載。隨著生成式AI的出現,Vikram一直在積極與客戶合作,利用AWS的AI/ML服務解決複雜的操作挑戰,簡化監控工作流程,並通過智能自動化增強事件響應。

Puneeth Ranjan Komaragiri是亞馬遜網絡服務(AWS)的首席技術帳戶經理。他對監控和可觀察性、雲財務管理和生成式AI領域特別感興趣。在目前的角色中,Puneeth喜歡與客戶密切合作,利用他的專業知識幫助他們設計和架構雲工作負載,以實現最佳擴展性和彈性。

Sudheer Sangunni是AWS企業支持的高級技術帳戶經理。憑藉在AWS雲和大數據方面的豐富專業知識,Sudheer在幫助客戶增強其AWS產品中的監控和可觀察性能力方面發揮了重要作用。

Vikrant Choudhary是亞馬遜網絡服務(AWS)的高級技術帳戶經理,專注於醫療保健和生命科學。擁有超過15年的雲解決方案和企業架構經驗,他幫助企業加速其數字轉型計劃。在目前的角色中,Vikrant與客戶合作,設計和實施創新解決方案,從雲遷移和應用現代化到生成式AI等新興技術,推動雲採用帶來成功的業務結果。

這篇文章展示了如何利用生成式AI來簡化EKS的運維過程。隨著技術的不斷進步,未來的雲計算運維將更加依賴自動化和智能化的解決方案,我們期待看到更多類似的創新應用出現。

以上文章由特價GPT API KEY所翻譯及撰寫。而圖片則由FLUX根據內容自動生成。

✈️ Mastercard 尊享優惠|預訂機票+酒店減高達 HK$200

2025 年 7 月 4 日 至 10 月 2 日
逢星期五於 Trip.com 使用 Mastercard 預訂機票或酒店,
輸入指定優惠代碼即可享折扣。數量有限,先到先得!

即刻搶代碼 🔗