0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Xây Dựng Agent Khắc Phục Sự Cố K8S Trên GKE

Đăng vào 6 ngày trước

• 4 phút đọc

Xây Dựng Agent Khắc Phục Sự Cố K8S Trên GKE

Giới Thiệu

Trong sự kiện hackathon "GKE Turns 10" tại gketurns10.devpost, tôi đã phát triển một agent khắc phục sự cố Kubernetes nhằm giải quyết nhanh chóng và hiệu quả các vấn đề phổ biến của cụm trên Google Kubernetes Engine (GKE). Mục tiêu là kết hợp khả năng quan sát Kubernetes với thông tin hỗ trợ từ AI nhằm tối ưu hóa hoạt động.

Tại Sao Tôi Xây Dựng Nó

Thách Thức: Nâng Cấp Microservices Bằng AI

Thách thức của hackathon là làm tăng cường một ứng dụng microservice hiện có bằng AI. Tôi đã lựa chọn một trong những ứng dụng có sẵn — Bank of Anthos hoặc Online Boutique — và xây dựng thêm thành phần mới mà không cần can thiệp vào mã nguồn ứng dụng chính.

Bất ngờ là bạn không được phép chạm vào mã nguồn chính. Thay vào đó, bạn sẽ xây dựng các thành phần container hóa mới tương tác với các API hiện có. Có thể coi đây như việc xây dựng một bộ não thông minh bên ngoài, thêm một lớp trí tuệ mới cho hệ thống.

Tính Năng Của Agent

Agent khắc phục sự cố hoạt động như một trợ lý thông minh cho các cụm Kubernetes. Nó liên tục giám sát các pod, dịch vụ, triển khai và mức sử dụng tài nguyên để theo dõi sức khỏe của cụm. Khi có vấn đề xảy ra, agent có thể thu thập thông tin (liệt kê pod, lấy log, mô tả triển khai, kiểm tra trạng thái dịch vụ), phân tích vấn đề (lỗi pod, lỗi kéo hình ảnh, kết nối mạng) và cung cấp gợi ý khắc phục sự cố dựa trên AI.

Các Công Cụ Có Sẵn Bao Gồm:

  • get_cluster_info: thông tin cụm cơ bản, trạng thái node, sức khỏe
  • list_pods: danh sách pod với trạng thái, mức sử dụng tài nguyên, độ sẵn sàng
  • get_pod_logs: lấy log để khắc phục sự cố
  • describe_pod: thông tin và sự kiện pod chi tiết
  • get_service_status: kiểm tra điểm cuối dịch vụ & kết nối mạng
  • get_deployment_status: theo dõi sức khỏe và số lượng bản sao của triển khai
  • delete_resource: xóa một tài nguyên K8s (pod, dịch vụ, triển khai, v.v.)
  • suggest_troubleshooting: mẹo khắc phục sự cố dựa trên AI
  • automate_remediation: phân tích khắc phục (ví dụ: lỗi kéo hình ảnh)
  • get_gke_cluster_metrics: số liệu hiệu suất cụ thể GKE
  • scale_deployment: mở rộng triển khai tới N bản sao
  • exec_pod_command: chạy lệnh bên trong container pod
  • network_connectivity_test: kiểm tra DNS và kết nối mạng

Công Nghệ Sử Dụng

  • Google Kubernetes Engine (GKE)
  • Máy chủ Model Context Protocol (MCP) thông qua mcp.server.fastmcp
  • Google ADK (google.adk.agents.LlmAgent) cho agent hội thoại
  • Xác thực Vertex AI
  • Python 3.11, thư viện Python cho Kubernetes, httpx, requests
  • Docker + Artifact Registry (hoặc GCR) và Cloud Build cho CI
  • Các bản khai kubectl và RBAC cho triển khai trong cụm

Nguồn Dữ Liệu & Dịch Vụ Bên Ngoài

  • API Kubernetes (thông qua ServiceAccount hoặc kubeconfig)
  • Siêu dữ liệu dự án Google Cloud (ID dự án, tên cụm/khu vực)
  • metrics-server cho số liệu node/pod

Những Phát Hiện và Học Hỏi

  1. Dự án này mang lại cho tôi nhiều hiểu biết:
    • API mạnh mẽ và khả năng tích hợp của GKE rất lý tưởng cho việc giám sát thông minh.
    • Kết hợp ADK với các hoạt động Kubernetes cho phép tự động hóa thông minh và ra quyết định tốt hơn.
    • MCP cung cấp một khung linh hoạt để mở rộng giám sát cụm.
    • Giám sát thời gian thực + thông tin hỗ trợ từ AI = quản lý cụm tốt hơn đáng kể.

Cải Thiện Trong Tương Lai

  1. Phân tích dự đoán mạnh mẽ hơn cho tự động mở rộng.
  2. Mô hình ML cho phát hiện bất thường.
  3. Khả năng tự động hóa mở rộng hơn.
  4. Tích hợp chặt chẽ hơn với các dịch vụ Google Cloud.

Kết Luận

Hackathons luôn mang lại sự phấn khích và hỗn loạn. Tôi đã gặp nhiều rào cản — số liệu sai, vấn đề quyền RBAC, những lỗi kỳ lạ vào 2 giờ sáng. Nhưng mỗi rào cản buộc tôi phải học hỏi thêm, và khi mọi thứ cuối cùng cũng vào guồng, cảm giác thật tuyệt vời.

Dự án này là đóng góp của tôi cho hackathon GKE Turns 10, và tôi tự hào về những gì mình đã xây dựng. Không chỉ là mã, mà còn là một bước tiến hướng tới việc làm cho các hệ thống cloud-native trở nên dễ tiếp cận và thân thiện hơn với con người.

Nếu bạn quan tâm, mã nguồn và chi tiết có trong repo. Và nếu bạn từng ước rằng Kubernetes có thể tự khắc phục sự cố, tôi rất muốn nghe ý kiến của bạn.
repo trên GitHub
Thử nghiệm Agent trên ADK.

👉 Chúc mừng 10 năm GKE — và hướng tới xây dựng 10 năm tiếp theo thông minh hơn.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào