Tác giả: Vikram Venkataraman, Puneeth Komaragiri, Sudheer Sangunni, và Vikrant Choudhary
Ngày đăng: 16 tháng 4 năm 2025
Chuyên mục: Amazon Bedrock, Amazon Bedrock Agents, Amazon Elastic Kubernetes Service, Analytics | Permalink | Comments | Share
Khi các tổ chức mở rộng việc triển khai Amazon Elastic Kubernetes Service (Amazon EKS), các quản trị viên nền tảng phải đối mặt với ngày càng nhiều thách thức trong việc quản lý hiệu quả các cụm đa người dùng (multi-tenant clusters). Các tác vụ như điều tra lỗi pod, giải quyết các ràng buộc tài nguyên và khắc phục cấu hình sai có thể tiêu tốn đáng kể thời gian và công sức. Thay vì dành những giờ kỹ thuật quý giá để thủ công phân tích log, theo dõi các chỉ số và triển khai bản sửa lỗi, các nhóm nên tập trung vào việc thúc đẩy đổi mới. Giờ đây, với sức mạnh của trí tuệ nhân tạo sinh (generative AI), bạn có thể thay đổi cách vận hành Kubernetes của mình. Bằng cách triển khai giám sát cụm thông minh, phân tích mẫu và tự động khắc phục, bạn có thể giảm đáng kể thời gian trung bình để xác định sự cố (MTTI – mean time to identify) và thời gian trung bình để khắc phục sự cố (MTTR – mean time to resolve) cho các vấn đề phổ biến trong cụm.
Tại AWS re:Invent 2024, chúng tôi đã công bố khả năng cộng tác đa tác nhân ( multi-agent collaboration) cho Amazon Bedrock (phiên bản xem trước). Với tính năng cộng tác đa tác nhân, bạn có thể xây dựng, triển khai và quản lý nhiều tác nhân AI làm việc cùng nhau trên các nhiệm vụ nhiều bước phức tạp đòi hỏi các kỹ năng chuyên biệt. Vì việc khắc phục sự cố cụm EKS liên quan đến việc trích xuất thông tin chi tiết từ nhiều tín hiệu quan sát (observability signals) và áp dụng bản sửa lỗi bằng quy trình CI/CD (Continuous Integration and Deployment), nên một quy trình làm việc đa tác nhân (multi-agent workflow) có thể giúp nhóm vận hành hợp lý hóa việc quản lý các cụm EKS. Tác nhân quản lý quy trình (workflow manager agent) có thể tích hợp với các tác nhân riêng lẻ tương tác với từng tín hiệu quan sát riêng và quy trình CI/CD để điều phối và thực hiện các tác vụ dựa trên lời nhắc của người dùng.
Trong bài viết này, chúng tôi trình bày cách điều phối nhiều tác nhân Amazon Bedrock để tạo ra một hệ thống khắc phục sự cố Amazon EKS tinh vi. Bằng cách cho phép cộng tác giữa các tác nhân chuyên biệt — trích xuất thông tin từ K8sGPT và thực hiện hành động thông qua framework ArgoCD — bạn có thể xây dựng một quy trình tự động toàn diện giúp xác định, phân tích và giải quyết sự cố cụm với sự can thiệp thủ công tối thiểu.
Tổng quan về giải pháp
Kiến trúc bao gồm các thành phần cốt lõi sau:
- Tác nhân cộng tác Amazon Bedrock (Amazon Bedrock collaborator agent) – Điều phối quy trình làm việc và duy trì ngữ cảnh trong khi định tuyến các lời nhắc của người dùng đến các tác nhân chuyên biệt, đồng thời quản lý các hoạt động nhiều bước và tương tác giữa các tác nhân.
- Tác nhân Amazon Bedrock cho K8sGPT (Amazon Bedrock agent for K8sGPT) – Đánh giá các sự kiện cụm và pod thông qua API Analyze của K8sGPT để phát hiện các vấn đề bảo mật, cấu hình sai và hiệu suất, đồng thời cung cấp các gợi ý khắc phục bằng ngôn ngữ tự nhiên.
- Tác nhân Amazon Bedrock cho ArgoCD (Amazon Bedrock agent for ArgoCD) – Quản lý các biện pháp khắc phục dựa trên GitOps thông qua ArgoCD, xử lý hoàn tác (rollback), tối ưu hóa tài nguyên và cập nhật cấu hình.
Sơ đồ sau minh họa kiến trúc của giải pháp.

Các yêu cầu tiên quyết
Bạn cần có sẵn các yêu cầu sau:
- AWS Command Line Interface (AWS CLI) phiên bản 2. Để biết hướng dẫn cài đặt, hãy tham khảo tài liệu: Installing or updating to the latest version of the AWS CLI.
- Một EKS cluster.
- helm.
- Kubectl.
- Amazon Bedrock model access.(Trong bài viết này, chúng tôi sử dụng Anthropic Claude 3.5 Sonnet v1) trong vùng AWS mà bạn triển khai.
- Tải xuống mẫu AWS CloudFormation đi kèm.
Mẫu này phụ thuộc vào việc tải tài nguyên từ một Amazon Simple Storage Service (Amazon S3) bucket được cung cấp trong khu vực AWS US East (N. Virginia) us-east-1. Do đó, nó chỉ giới hạn chạy trong vùng us-east-1.
Thiết lập cụm Amazon EKS với K8sGPT và ArgoCD
Chúng ta bắt đầu bằng cách cài đặt và cấu hình trình điều hành K8sGPT và bộ điều khiển ArgoCD trên cụm EKS.
Trình điều hành K8sGPT sẽ giúp kích hoạt khả năng phân tích và khắc phục sự cố cụm được hỗ trợ bởi AI. Ví dụ, nó có thể tự động phát hiện và đề xuất cách khắc phục cho các triển khai bị cấu hình sai, chẳng hạn như xác định và giải quyết các vấn đề ràng buộc tài nguyên trong các pod.
ArgoCD là một công cụ phân phối liên tục GitOps khai báo cho Kubernetes, giúp tự động hóa việc triển khai ứng dụng bằng cách giữ cho trạng thái ứng dụng mong muốn được đồng bộ hóa với những gì được định nghĩa trong kho Git.
Tác nhân Amazon Bedrock đóng vai trò là người ra quyết định thông minh trong kiến trúc của chúng ta, phân tích các vấn đề của cụm được K8sGPT phát hiện. Sau khi nguyên nhân gốc được xác định, tác nhân này điều phối các hành động khắc phục thông qua công cụ GitOps của ArgoCD. Sự tích hợp mạnh mẽ này có nghĩa là khi các vấn đề được phát hiện (dù là triển khai bị cấu hình sai, giới hạn tài nguyên, hay sự cố mở rộng quy mô), tác nhân có thể tự động tích hợp với ArgoCD để cung cấp các bản sửa lỗi cần thiết. ArgoCD sau đó tiếp nhận các thay đổi này và đồng bộ hóa chúng với cụm EKS của bạn, tạo ra một cơ sở hạ tầng tự phục hồi thực sự.
- Tạo các không gian tên cần thiết trong Amazon EKS:
| kubectl create ns helm-guestbook kubectl create ns k8sgpt-operator-system |
- Thêm kho Helm của k8sgpt và cài đặt trình điều hành:
| helm repo add k8sgpt https://charts.k8sgpt.ai/ helm repo update helm install k8sgpt-operator k8sgpt/k8sgpt-operator \ –namespace k8sgpt-operator-system |
- Bạn có thể xác minh cài đặt bằng cách nhập lệnh sau:
| kubectl get pods -n k8sgpt-operator-system NAME READY STATUS RESTARTS AGE release-k8sgpt-operator-controller-manager-5b749ffd7f-7sgnd 2/2 Running 0 1d |
Sau khi trình điều hành được triển khai, bạn có thể cấu hình tài nguyên K8sGPT. Định nghĩa tài nguyên tùy chỉnh (Custom Resource Definition – CRD) này sẽ có cấu hình mô hình ngôn ngữ lớn (large language model – LLM) hỗ trợ phân tích và khắc phục sự cố cụm được hỗ trợ bởi AI. K8sGPT hỗ trợ nhiều backend khác nhau để hỗ trợ trong phân tích AI. Trong bài viết này, chúng ta sử dụng Amazon Bedrock làm backend và Claude V3 của Anthropic làm LLM.
- Bạn cần tạo danh tính pod để cung cấp cho cụm EKS quyền truy cập vào các dịch vụ AWS khác với Amazon Bedrock:
| 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 |
- Cấu hình CRD của K8sGPT:
| cat << EOF > 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 kubectl apply -f k8sgpt.yaml |
- Xác thực cài đặt để xác nhận pod k8sgpt-bedrock đang chạy thành công:
| kubectl get pods -n k8sgpt-operator-system NAME READY STATUS RESTARTS AGE k8sgpt-bedrock-5b655cbb9b-sn897 1/1 Running 9 (22d ago) 22d release-k8sgpt-operator-controller-manager-5b749ffd7f-7sgnd 2/2 Running 3 (10h ago) 22d |
- Bây giờ bạn có thể cấu hình bộ điều khiển ArgoCD:
| 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 |
- Xác minh cài đặt ArgoCD:
| kubectl get pods -n argocd NAME READY STATUS RESTARTS AGE argocd-application-controller-0 1/1 Running 0 43d argocd-applicationset-controller-5c787df94f-7jpvp 1/1 Running 0 43d argocd-dex-server-55d5769f46-58dwx 1/1 Running 0 43d argocd-notifications-controller-7ccbd7fb6-9pptz 1/1 Running 0 43d argocd-redis-587d59bbc-rndkp 1/1 Running 0 43d argocd-repo-server-76f6c7686b-rhjkg 1/1 Running 0 43d argocd-server-64fcc786c-bd2t8 1/1 Running 0 43d |
- Sửa dịch vụ ArgoCD để có bộ cân bằng tải bên ngoài:
| kubectl patch svc argocd-server -n argocd -p ‘{“spec”: {“type”: “LoadBalancer”}}’ |
- Giờ bạn có thể truy cập giao diện người dùng ArgoCD với endpoint của bộ cân bằng tải và thông tin đăng nhập của người dùng admin:
| kubectl get svc argocd-server -n argocd NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE argocd-server LoadBalancer 10.100.168.229 a91a6fd4292ed420d92a1a5c748f43bc-653186012.us-east-1.elb.amazonaws.com 80:32334/TCP,443:32261/TCP 43d |
- Lấy thông tin đăng nhập cho giao diện người dùng ArgoCD:
| export argocdpassword=`kubectl -n argocd get secret argocd-initial-admin-secret \ -o jsonpath=”{.data.password}” | base64 -d` |
- Đẩy thông tin đăng nhập lên AWS Secrets Manager:
| aws secretsmanager create-secret \ –name argocdcreds \ –description “Credentials for argocd” \ –secret-string “{\”USERNAME\”:\”admin\”,\”PASSWORD\”:\”$argocdpassword\”}” |
- Cấu hình ứng dụng mẫu trong ArgoCD:
| cat << EOF > 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 |
- Áp dụng cấu hình và xác minh từ giao diện ArgoCD bằng cách đăng nhập với tư cách người dùng admin:
| kubectl apply -f argocd-application.yaml |

- Sẽ mất một thời gian để K8sGPT phân tích các pod mới được tạo. Để thực hiện ngay lập tức, hãy khởi động lại các pod được tạo trong không gian tên k8sgpt-operator-system. Các pod có thể được khởi động lại bằng cách nhập lệnh sau:
| kubectl -n k8sgpt-operator-system rollout restart deploy deployment.apps/k8sgpt-bedrock restarted deployment.apps/k8sgpt-operator-controller-manager restarted |
Thiết lập các tác nhân Amazon Bedrock cho K8sGPT và ArgoCD
Chúng ta sử dụng một stack CloudFormation để triển khai các tác nhân riêng lẻ vào khu vực US East (N. Virginia). Khi bạn triển khai mẫu CloudFormation, bạn sẽ triển khai một số tài nguyên (chi phí sẽ phát sinh cho các tài nguyên AWS được sử dụng).
Sử dụng các tham số sau cho mẫu CloudFormation:
- EnvironmentName: Tên cho triển khai (EKSBlogSetup)
- ArgoCD_LoadBalancer_URL: Trích xuất URL LoadBalancer của ArgoCD:
| kubectl get service argocd-server -n argocd -ojsonpath=”{.status.loadBalancer.ingress[0].hostname}” |
- AWSSecretName: Tên bí mật của Secrets Manager được tạo để lưu trữ thông tin đăng nhập ArgoCD
Stack tạo ra các hàm AWS Lambda sau:
- <Stack name>-LambdaK8sGPTAgent-<auto-generated>
- <Stack name>-RestartRollBackApplicationArgoCD-<auto-generated>
- <Stack name>-ArgocdIncreaseMemory-<auto-generated>
Stack tạo ra các tác nhân Amazon Bedrock sau:
- ArgoCDAgent, với các nhóm hành động sau:
- argocd-rollback
- argocd-restart
- argocd-memory-management
- K8sGPTAgent, với nhóm hành động:
- k8s-cluster-operations
- CollaboratorAgent
Stack xuất ra các giá trị sau, với các tác nhân được liên kết với nó:
- ArgoCDAgent
- K8sGPTAgent
- LambdaK8sGPTAgentRole, vai trò AWS Identity and Access Management (IAM) – Amazon Resource Name (ARN) được liên kết với hàm Lambda xử lý tương tác với tác nhân K8sGPT trên cụm EKS. ARN của vai trò này sẽ cần thiết ở giai đoạn cấu hình sau.
- K8sGPTAgentAliasId, ID của bí danh tác nhân Amazon Bedrock K8sGPT
- ArgoCDAgentAliasId, ID của bí danh tác nhân Amazon Bedrock ArgoCD
- CollaboratorAgentAliasId, ID của bí danh tác nhân Amazon Bedrock cộng tác viên
Gán quyền phù hợp để cho phép tác nhân Amazon Bedrock K8sGPT truy cập cụm EKS
Để cho phép tác nhân Amazon Bedrock K8sGPT truy cập cụm EKS, bạn cần cấu hình quyền IAM phù hợp bằng cách sử dụng API quản lý truy cập của Amazon EKS. Đây là một quy trình gồm hai bước:
Trước tiên, bạn tạo một access entry cho vai trò thực thi của hàm Lambda (bạn có thể tìm thấy trong phần output của mẫu CloudFormation), sau đó bạn liên kết AmazonEKSViewPolicy để cấp quyền chỉ đọc cho cụm.
Cấu hình này đảm bảo rằng tác nhân K8sGPT có quyền cần thiết để giám sát và phân tích tài nguyên cụm EKS trong khi vẫn duy trì nguyên tắc quyền tối thiểu.
- Tạo access entry cho vai trò thực thi của hàm Lambda
| 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 |
- Liên kết chính sách EKS view với access entry
| 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 |
- Xác minh các tác nhân Amazon Bedrock

Mẫu CloudFormation thêm cả ba tác nhân cần thiết.
Để xem các tác nhân, trong Bảng điều khiển Amazon Bedrock, dưới phần Builder tools trong ngăn điều hướng, chọn Agents, như được hiển thị trong ảnh chụp màn hình sau.
Thực hiện khắc phục sự cố Amazon EKS bằng quy trình tác nhân Amazon Bedrock
Bây giờ, hãy kiểm tra giải pháp. Chúng ta khám phá hai kịch bản sau:
- Tác nhân phối hợp với tác nhân K8sGPT để cung cấp thông tin chi tiết về nguyên nhân gốc của lỗi pod
- Tác nhân cộng tác phối hợp với tác nhân ArgoCD để cung cấp phản hồi
Tác nhân phối hợp với tác nhân K8sGPT để cung cấp thông tin chi tiết về nguyên nhân gốc của lỗi pod
Trong phần này, chúng ta xem xét một cảnh báo ngừng hoạt động cho ứng dụng mẫu có tên memory-demo. Chúng ta quan tâm đến nguyên nhân gốc của vấn đề. Chúng ta sử dụng prompt sau: “We got a down alert for the memory-demo app. Help us with the root cause of the issue.”
Tác nhân không chỉ nêu nguyên nhân gốc mà còn tiến thêm một bước để có thể khắc phục lỗi, trong trường hợp này là tăng tài nguyên bộ nhớ cho ứng dụng.

Tác nhân cộng tác phối hợp với tác nhân ArgoCD để cung cấp phản hồi
Trong kịch bản này, chúng ta tiếp tục từ prompt trước đó. Chúng ta cảm thấy ứng dụng không được cung cấp đủ bộ nhớ và nó nên được tăng lên để khắc phục sự cố vĩnh viễn. Chúng ta cũng có thể thấy ứng dụng đang ở trạng thái không lành mạnh trong giao diện ArgoCD, như được hiển thị trong ảnh chụp màn hình sau.

Bây giờ hãy tiến hành tăng bộ nhớ, như được hiển thị trong ảnh chụp màn hình sau.

Tác nhân đã tương tác với tác nhân argocd_operations Amazon Bedrock và đã thành công trong việc tăng bộ nhớ. Điều này cũng có thể được xác nhận trong giao diện ArgoCD.

Dọn dẹp
Nếu bạn quyết định ngừng sử dụng giải pháp, hãy hoàn tất các bước sau:
- Xóa các tài nguyên được triển khai bằng AWS CloudFormation:
- Trong bảng điều khiển AWS CloudFormation, chọn Stacks trong ngăn điều hướng.
- Xác định stack mà bạn đã tạo trong quá trình triển khai (bạn đã gán tên cho nó).
- Chọn stack và chọn Delete.
- Trong bảng điều khiển AWS CloudFormation, chọn Stacks trong ngăn điều hướng.
- Xóa cụm EKS nếu bạn đã tạo cụm này đặc biệt cho việc triển khai này.
Kết luận
Bằng cách điều phối nhiều tác nhân Amazon Bedrock, chúng tôi đã chứng minh cách xây dựng một hệ thống khắc phục sự cố Amazon EKS được hỗ trợ bởi AI giúp đơn giản hóa hoạt động Kubernetes. Sự tích hợp giữa phân tích của K8sGPT và tự động triển khai của ArgoCD thể hiện những khả năng mạnh mẽ khi kết hợp các tác nhân AI chuyên biệt với các công cụ DevOps hiện có.Mặc dù giải pháp này thể hiện bước tiến trong việc tự động hóa hoạt động Kubernetes, nhưng điều quan trọng là cần nhớ rằng giám sát của con người vẫn có giá trị, đặc biệt đối với các kịch bản phức tạp và các quyết định chiến lược.
Khi Amazon Bedrock và các khả năng tác nhân của nó tiếp tục phát triển, chúng ta có thể kỳ vọng sẽ có những khả năng điều phối tinh vi hơn nữa. Bạn có thể mở rộng giải pháp này để kết hợp thêm các công cụ, chỉ số và quy trình tự động hóa nhằm đáp ứng nhu cầu cụ thể của tổ chức bạn.
Để tìm hiểu thêm về Amazon Bedrock, hãy tham khảo các tài nguyên sau:
- 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
- Getting insight from Amazon Managed Service for Prometheus using natural language powered by Amazon Bedrock
Giới thiệu về các tác giả

Vikram Venkataraman là Kiến trúc sư Giải pháp Chuyên gia Cấp cao tại Amazon Web Services (AWS). Ông giúp khách hàng hiện đại hóa, mở rộng và áp dụng các phương pháp hay nhất cho khối lượng công việc được đóng gói của họ. Với sự xuất hiện của Generative AI, Vikram đã tích cực làm việc với khách hàng để tận dụng các dịch vụ AI/ML của AWS nhằm giải quyết các thách thức vận hành phức tạp, hợp lý hóa quy trình giám sát và nâng cao phản ứng sự cố thông qua tự động hóa thông minh.

Puneeth Ranjan Komaragiri là Quản lý Tài khoản Kỹ thuật Cấp cao tại AWS. Anh đặc biệt đam mê các lĩnh vực giám sát, khả năng quan sát, quản lý tài chính đám mây và Generative AI.
Trong vai trò hiện tại, Puneeth thích hợp tác chặt chẽ với khách hàng, tận dụng chuyên môn của mình để giúp họ thiết kế và kiến trúc khối lượng công việc đám mây tối ưu cho quy mô và khả năng phục hồi.

Sudheer Sangunni là Quản lý Tài khoản Kỹ thuật Cao cấp tại AWS Enterprise Support. Với chuyên môn sâu rộng trong AWS Cloud và dữ liệu lớn, Sudheer đóng vai trò then chốt trong việc hỗ trợ khách hàng nâng cao khả năng giám sát và quan sát trong các dịch vụ AWS.

Vikrant Choudhary là Quản lý Tài khoản Kỹ thuật Cao cấp tại Amazon Web Services (AWS), chuyên về lĩnh vực chăm sóc sức khỏe và khoa học đời sống. Với hơn 15 năm kinh nghiệm trong các giải pháp đám mây và kiến trúc doanh nghiệp, anh giúp các doanh nghiệp tăng tốc sáng kiến chuyển đổi số của họ. Trong vai trò hiện tại, Vikrant hợp tác với khách hàng để thiết kế và triển khai các giải pháp sáng tạo, từ di chuyển đám mây và hiện đại hóa ứng dụng đến các công nghệ mới nổi như Generative AI, thúc đẩy kết quả kinh doanh thành công thông qua việc áp dụng đám mây.