Kubeshark
ทางการการเข้าถึง MCP สำหรับการรับส่งข้อมูลเครือข่าย L4 และ L7 ทั่วทั้งคลัสเตอร์ แพ็กเก็ต API และเพย์โหลดที่สมบูรณ์
คุณทำอะไรได้บ้างด้วย Kubeshark MCP?
- สอบถามธุรกรรม API ชั้น L7 ด้วยตัวกรอง KFL — ใช้
list_api_callsเพื่อค้นหาคำขอ HTTP, gRPC, Redis, Kafka หรือ DNS ที่ตรงตามเงื่อนไข เช่น รหัสสถานะหรือเส้นทาง - ตรวจสอบรายละเอียด API call ที่เฉพาะเจาะจง — ดึงข้อมูลคำขอ/การตอบสนองแบบเต็มสำหรับธุรกรรมเดียวด้วย
get_api_call - รับสถิติ API แบบรวม — สรุปรูปแบบการรับส่งข้อมูล อัตราข้อผิดพลาด หรือการกระจายของเวลาแฝงโดยใช้
get_api_stats - ดูโฟลว์เครือข่าย L4 และสรุปผล — แสดงรายการการเชื่อมต่อ TCP/UDP และรับภาพรวมการเชื่อมต่อผ่าน
list_l4_flowsและget_l4_flow_summary - สร้างและจัดการสแนปช็อต PCAP — จับภาพการรับส่งข้อมูลเครือข่ายเพื่อการวิเคราะห์แบบออฟไลน์ด้วย
create_snapshotและlist_snapshots - ควบคุมการแยกวิเคราะห์โปรโตคอล L7 — เปิดหรือปิดการแยกวิเคราะห์โปรโตคอลเชิงลึกตามต้องการโดยใช้
enable_dissectionและdisable_dissection
เอกสาร
Kubeshark MCP Server
Kubeshark MCP (Model Context Protocol) เซิร์ฟเวอร์ช่วยให้ผู้ช่วย AI อย่าง Claude Desktop, Cursor และไคลเอนต์ที่รองรับ MCP อื่นๆ สามารถสอบถามข้อมูลการรับส่งข้อมูลเครือข่าย Kubernetes แบบเรียลไทม์ได้
ทักษะ AI
MCP มีเครื่องมือให้ — ทักษะ AI จะสอนเอเจนต์ถึงวิธีใช้งาน ทักษะเปลี่ยนความสามารถ MCP ดิบๆ ให้เป็นเวิร์กโฟลว์เฉพาะโดเมน เช่น การวิเคราะห์สาเหตุหลัก การกรองการรับส่งข้อมูล และการสืบสวนทางนิติวิทยาศาสตร์ ดู README ทักษะ สำหรับการติดตั้งและการใช้งาน
| ทักษะ | คำอธิบาย |
|---|---|
network-rca | การวิเคราะห์สาเหตุหลักของเครือข่าย — การสืบสวนย้อนหลังตามสแนปช็อตด้วยเส้นทาง PCAP และการแยกส่วน |
kfl | ผู้เชี่ยวชาญตัวกรอง KFL2 — เขียน แก้ไขข้อบกพร่อง และเพิ่มประสิทธิภาพการสอบถามการรับส่งข้อมูลในทุกโปรโตคอลที่รองรับ |
คุณสมบัติ
- การวิเคราะห์การรับส่งข้อมูล API L7: สอบถามธุรกรรม HTTP, gRPC, Redis, Kafka, DNS
- โฟลว์เครือข่าย L4: ดูโฟลว์ TCP/UDP พร้อมสถิติการรับส่งข้อมูล
- การจัดการคลัสเตอร์: เริ่ม/หยุดการปรับใช้ Kubeshark (พร้อมการควบคุมความปลอดภัย)
- สแนปช็อต PCAP: สร้างและส่งออกการจับข้อมูลเครือข่าย
- พรอมต์ในตัว: พรอมต์ที่กำหนดค่าไว้ล่วงหน้าสำหรับงานวิเคราะห์ทั่วไป
การติดตั้ง
1. ติดตั้ง Kubeshark CLI
# macOS
brew install kubeshark
# Linux
sh <(curl -Ls https://kubeshark.com/install)
# Windows (PowerShell)
choco install kubeshark
หรือดาวน์โหลดจาก GitHub Releases
2. กำหนดค่า Claude Desktop
เพิ่มลงในการกำหนดค่า Claude Desktop ของคุณ:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
ค่าเริ่มต้น (ต้องมีการเข้าถึง kubectl / บริบท kube)
{
"mcpServers": {
"kubeshark": {
"command": "kubeshark",
"args": ["mcp"]
}
}
}
ด้วยพาธ kubeconfig ที่ระบุอย่างชัดเจน:
{
"mcpServers": {
"kubeshark": {
"command": "kubeshark",
"args": ["mcp", "--kubeconfig", "/path/to/.kube/config"]
}
}
}
โหมด URL (ไม่ต้องใช้ kubectl)
ใช้เมื่อเครื่องไม่มีการเข้าถึง kubectl หรือบริบท kube เชื่อมต่อโดยตรงกับการปรับใช้ Kubeshark ที่มีอยู่:
{
"mcpServers": {
"kubeshark": {
"command": "kubeshark",
"args": ["mcp", "--url", "https://kubeshark.example.com"]
}
}
}
สำหรับ Hub ที่มีเกต (AUTH_ENABLED=true) โหมด URL ไม่สามารถสร้างโทเค็นได้ (ไม่มีการเข้าถึง kube) ดังนั้นให้ระบุโทเค็นอย่างชัดเจนผ่าน --token (หรือตัวแปรสภาพแวดล้อม KUBESHARK_HUB_TOKEN) สร้างโทเค็นจากเครื่องที่มีการเข้าถึงคลัสเตอร์:
kubectl create token kubeshark-cli -n <release-namespace> --audience kubeshark-hub
{
"mcpServers": {
"kubeshark": {
"command": "kubeshark",
"args": ["mcp", "--url", "https://kubeshark.example.com", "--token", "<token>"]
}
}
}
โทเค็นมีอายุสั้น (~1 ชั่วโมง) และโหมด URL ไม่สามารถต่ออายุอัตโนมัติ ได้ เมื่อหมดอายุเซิร์ฟเวอร์จะรายงานข้อความ 401 ... token expired/invalid ที่ชัดเจน — สร้างใหม่และรีสตาร์ท โหมดพร็อกซี (ค่าเริ่มต้น พร้อมการเข้าถึง kube) จะสร้างโทเค็น kubeshark-cli โดยอัตโนมัติและ ต่ออายุอัตโนมัติ ดังนั้นเซสชันที่ทำงานเป็นเวลานานจะไม่หมดอายุ
พร้อมการดำเนินการทำลายล้าง
{
"mcpServers": {
"kubeshark": {
"command": "kubeshark",
"args": ["mcp", "--allow-destructive", "--kubeconfig", "/path/to/.kube/config"]
}
}
}
3. สร้างการกำหนดค่า
ใช้ CLI เพื่อสร้างการกำหนดค่า:
kubeshark mcp --mcp-config --url https://kubeshark.example.com
เครื่องมือที่มีอยู่
การวิเคราะห์การรับส่งข้อมูล (ทุกโหมด)
| เครื่องมือ | คำอธิบาย |
|---|---|
list_workloads | แสดงรายการพ็อด บริการ เนมสเปซที่มีการรับส่งข้อมูลที่สังเกตได้ |
list_api_calls | สอบถามธุรกรรม API L7 ด้วยการกรอง KFL |
get_api_call | รับข้อมูลโดยละเอียดเกี่ยวกับการเรียก API เฉพาะ |
get_api_stats | รับสถิติ API แบบรวม |
list_l4_flows | แสดงรายการโฟลว์เครือข่าย L4 (TCP/UDP) |
get_l4_flow_summary | รับสรุปการเชื่อมต่อ L4 |
list_snapshots | แสดงรายการสแนปช็อต PCAP ทั้งหมด |
create_snapshot | สร้างสแนปช็อต PCAP ใหม่ |
get_dissection_status | ตรวจสอบสถานะการแยกวิเคราะห์โปรโตคอล L7 |
enable_dissection | เปิดใช้งานการแยกส่วนโปรโตคอล L7 |
disable_dissection | ปิดใช้งานการแยกส่วนโปรโตคอล L7 |
การจัดการคลัสเตอร์ (โหมดพร็อกซีเท่านั้น)
| เครื่องมือ | คำอธิบาย | ต้องการ |
|---|---|---|
check_kubeshark_status | ตรวจสอบว่า Kubeshark กำลังทำงานอยู่หรือไม่ | - |
start_kubeshark | ปรับใช้ Kubeshark กับคลัสเตอร์ | --allow-destructive |
stop_kubeshark | ลบ Kubeshark ออกจากคลัสเตอร์ | --allow-destructive |
พรอมต์ที่มีอยู่
| พรอมต์ | คำอธิบาย |
|---|---|
analyze_traffic | วิเคราะห์รูปแบบการรับส่งข้อมูล API และระบุปัญหา |
find_errors | ค้นหาและสรุปข้อผิดพลาดและความล้มเหลวของ API |
trace_request | ติดตามเส้นทางคำขอผ่านไมโครเซอร์วิส |
show_topology | แสดงโทโพโลยีการสื่อสารของบริการ |
latency_analysis | วิเคราะห์รูปแบบเวลาแฝงและระบุปลายทางที่ช้า |
security_audit | ตรวจสอบการรับส่งข้อมูลเพื่อหาข้อกังวลด้านความปลอดภัย |
compare_traffic | เปรียบเทียบรูปแบบการรับส่งข้อมูลระหว่างช่วงเวลา |
debug_connection | แก้ไขข้อบกพร่องปัญหาการเชื่อมต่อระหว่างบริการ |
ตัวอย่างการสนทนา
User: Show me all HTTP 500 errors in the last hour
Claude: I'll query the API traffic for 500 errors.
[Calling list_api_calls with kfl="http and response.status == 500"]
Found 12 HTTP 500 errors:
1. POST /api/checkout -> payment-service (500)
Time: 10:23:45 | Latency: 2340ms
...
User: What services are communicating with the database?
Claude: Let me check the L4 flows to the database.
[Calling list_l4_flows with dst_filter="postgres"]
Found 5 services connecting to postgres:5432:
- orders-service: 456KB transferred
- users-service: 123KB transferred
...
ตัวเลือก CLI
| ตัวเลือก | คำอธิบาย |
|---|---|
--url | URL โดยตรงไปยัง Kubeshark Hub |
--token | โทเค็น SA/ bearer ของ Hub สำหรับโหมด --url กับ Hub ที่มีเกต (รวมถึง KUBESHARK_HUB_TOKEN); ถูกละเว้นในโหมดพร็อกซี ซึ่งสร้างและต่ออายุโทเค็นอัตโนมัติ |
--kubeconfig | พาธไปยังไฟล์ kubeconfig |
--allow-destructive | เปิดใช้งานการดำเนินการเริ่ม/หยุด |
--list-tools | แสดงรายการเครื่องมือที่มีอยู่และออก |
--mcp-config | พิมพ์ JSON การกำหนดค่า Claude Desktop |
KFL (Kubeshark Filter Language)
สอบถามการรับส่งข้อมูลโดยใช้ไวยากรณ์ KFL:
# HTTP requests to a specific path
http and request.path == "/api/users"
# Errors only
response.status >= 400
# Specific source pod
src.pod.name == "frontend-.*"
# Multiple conditions
http and src.namespace == "default" and response.status == 500
MCP Registry
Kubeshark ถูกเผยแพร่ไปยัง MCP Registry โดยอัตโนมัติในทุกการเผยแพร่
server.json ในไดเรกทอรีนี้เป็นไฟล์อ้างอิง ข้อมูลเมตาของรีจิสทรีจริง (เวอร์ชัน, แฮช SHA256) ถูกสร้างขึ้นโดยอัตโนมัติระหว่างเวิร์กโฟลว์การเผยแพร่ ดู .github/workflows/release.yml สำหรับรายละเอียด
ลิงก์
ใบอนุญาต
Apache-2.0