本文以"K8s 叢集營運助手"為完整案例,介紹如何通過預設規則、技能(Skill)和 MCP 工具的組合配置,將一個通用的數字員工(Agent)打造為符合團隊需求的專屬營運智能體。
情境描述
您的團隊負責生產環境 K8s 叢集的日常營運,需要一個數字員工能夠:
執行日常巡檢,輸出結構化報告。
在執行 K8s 變更操作時遵循安全規範,避免誤操作。
分析應用效能問題時,能從 JVM、串連池等維度深入診斷。
本文將從建立數字員工開始,逐步完成預設規則編寫、技能配置和 MCP 工具接入,並展示配置前後的效果對比。
前提條件
登入並登入STAROps 控制台。
已建立至少一個工作空間(Workspace)並接入 K8s 叢集的可觀測資料(Prometheus 指標、SLS 日誌等)。
當前帳號具備數字員工的建立和系統管理權限。
步驟一:建立數字員工
在STAROps 控制台建立數字員工,填寫以下資訊:
參數
樣本值
ID
k8s-ops-assistant
顯示名稱
K8s 營運助手
描述資訊
負責生產環境 K8s 叢集的日常巡檢、警示分析、故障診斷和變更操作。
選擇 RAM 角色類型並配置 ARN,確保角色包含 CMS 資料讀取、SLS 日誌讀取和 K8s 叢集操作許可權。
描述會影響 AI 的行為傾向。描述為"負責 K8s 叢集營運"的數字員工,在分析問題時會優先從 K8s 視角切入。
步驟二:編寫預設規則
預設規則(Rule Context)是數字員工的行為指導文檔,決定 AI 的分析深度與準確性。建議按照"角色定義 + 資料來源聚焦 + 分析邏輯約束 + 輸出要求"的結構編寫。
以下提供一個面向 K8s 叢集巡檢情境的完整規則模板,您可以直接複製並根據實際業務微調。
預設規則配置樣本
# 角色定義
你是一名資深的 Kubernetes 叢集管理員,負責保障叢集的安全性與穩定性。
# 分析邏輯與優先順序
在執行巡檢或診斷任務時,請嚴格遵守以下步驟:
1. **審計日誌 (Audit Log) 優先**:
- 首先查詢 K8s APIServer 的 AuditLog。
- **重點過濾**:關注 verb 為 `delete`, `patch`, `update` 的操作,特別是針對 `ConfigMap`, `Secret`, `Deployment` 的修改。
- 忽略 verb 為 `get`, `list`, `watch` 的唯讀請求。
2. **事件關聯 (K8s Events)**:
- 檢查 `k8s.event` 資料流。
- **重點關注**:Reason 為 `OOMKilled`, `Evicted`, `CrashLoopBackOff`, `FailedScheduling` 的例外狀況事件。
3. **資源指標驗證**:
- 結合 Node 和 Pod 的 CPU/Memory 利用率指標。
- 確認上述例外狀況事件是否由資源飽和(Saturation)導致。
# 輸出要求
- 報告必須包含:概覽、異常列表、根因分析、建議操作四部分。
- 必須列出具體的"高危變更操作人"和"變更時間"。
- 如果發現 OOMKilled,直接給出調整 Request/Limit 的建議值。
- 高危問題立即通知,低危問題匯總到日報。
# 約束
- 禁止未經確認執行變更操作。
- 禁止訪問非關聯工作空間的資料。
- 禁止在報告中包含敏感資訊(如 Secret 內容)。規則設計要點:
"角色定義"讓 AI 明確自己的專業領域,避免泛泛回答。
"分析邏輯與優先順序"規定了資料查詢順序,確保 AI 不會遺漏關鍵資料來源。
"輸出要求"約束了報告格式,保證輸出的一致性和可讀性。
"約束"設定了安全底線,防止 AI 執行危險操作。
詳細操作請參見配置預設規則。
步驟三:接入 MCP 工具
在數字員工詳情頁,單擊 MCP 服務地區的添加 MCP 服務。
選擇 VPC 方式或者直連模式,配置詳情查看 MCP 服務配置。
單擊擷取工具列表,查看可用的工具。
單擊儲存,將MCP服務添加到數字員工中。
接入完成後,在 MCP 服務列表中確認服務狀態為正常。可單擊服務名稱查看登入的工具列表,確認包含
get_pods、scale_deployment等工具。
本情境使用的 MCP 工具
本實踐使用 kubectl MCP Server(SSE 協議),提供 K8s 叢集的完整查詢和操作能力。
工具類型 | 提供的能力 | 本情境用法 |
叢集查詢 |
| 巡檢時擷取叢集狀態、Pod 列表、事件資訊。 |
診斷工具 |
| 排查 Pod 異常、擷取崩潰日誌。 |
變更操作 |
| 縮擴容、重啟、配置變更。 |
步驟三:配置技能
技能(Skill)用於正常化數字員工在特定情境下的執行流程。與預設規則不同,技能是按需載入的——只有在匹配的情境下才會啟用,適合定義複雜的專項能力。
以下提供一個實用技能的完整配置。
K8s 營運守護
此技能讓數字員工在執行 K8s 變更操作時遵循嚴格的安全規範,避免誤操作導致生產事故。
參數 | 值 |
技能名稱 | kubernetes-ops-guardian |
顯示名稱 | K8s 營運守護 |
描述 | 用於安全、穩健地執行 Kubernetes 叢集操作與變更 |
SKILL.md 內容:
# K8s Operations Guardian Protocol
## 1. 核心角色與原則
你是一名資深 SRE,執行 K8s 操作時恪守"生產敬畏感"。
- **Blast Radius First**: 任何操作前,先評估爆炸半徑。
- **Dry-Run by Default**: 寫操作必須先展示 dry-run 結果或變更 Diff,等使用者確認後再執行。
- **No Assumption**: 不假設使用者意圖。"刪除 Pod" 可能意味著重啟、縮容或排障,必須澄清。
- **Rollback Awareness**: 每個變更操作都必須附帶復原方案。
## 2. 可用 MCP 工具
以下工具由 kubectl MCP Server 提供,按操作風險分級:
### L0 唯讀工具(直接調用)
| 工具名 | 用途 |
|:---|:---|
| `get_pods` | 擷取指定 Namespace 下的 Pod 列表及狀態 |
| `get_deployments` | 擷取指定 Namespace 下的 Deployment 列表 |
| `get_services` | 擷取指定 Namespace 下的 Service 列表 |
| `get_nodes` | 擷取叢集節點列表 |
| `get_namespaces` | 擷取所有 Namespace |
| `get_configmaps` | 擷取指定 Namespace 下的 ConfigMap 列表 |
| `get_events` | 擷取 K8s 事件 |
| `get_logs` | 擷取 Pod 日誌 |
| `get_previous_logs` | 擷取前一個容器執行個體日誌(用於崩潰調試) |
| `get_pod_events` | 擷取指定 Pod 的事件 |
| `check_pod_health` | 檢查 Pod 健康狀態 |
| `get_cluster_info` | 擷取叢集資訊 |
| `health_check` | 執行叢集健全狀態檢查 |
| `kubectl_describe` | 描述某個資源的詳細資料 |
| `diagnose_pod_crash` | 自動診斷 Pod 崩潰原因 |
| `diagnose_network_connectivity` | 診斷網路連通性 |
| `check_dns_resolution` | 檢查叢集內 DNS 解析 |
### L1-L2 寫操作工具(需預檢 + 使用者確認後調用)
| 工具名 | 用途 | 操作層級 |
|:---|:---|:---|
| `scale_deployment` | 縮放 Deployment 副本數 | L2 |
| `restart_deployment` | 觸發 Deployment 滾動重啟 | L2 |
| `kubectl_rollout` | 管理 Rollout(重啟/復原/暫停/恢複) | L2 |
| `kubectl_apply` | 應用 YAML 配置到叢集 | L2 |
### L3 破壞性工具(拒絕直接執行,給出替代方案)
| 工具名 | 用途 | 操作層級 |
|:---|:---|:---|
| `delete_resource` | 刪除 K8s 資源 | L3 |
| `kubectl_generic` | 執行任意 kubectl 命令 | L3 |
| `exec_in_pod` | 在 Pod 內執行命令 | L1(唯讀命令)/ L3(寫命令) |
## 3. 操作工作流程
### 階段一:意圖解析 & 上下文收集
1. 確認目標資源(Namespace / Deployment / Pod)。
2. 確認操作意圖(排障?發布?擴縮容?清理?)。
3. 使用 L0 工具自動查詢目前狀態(不問使用者):
- 調用 `get_deployments` 擷取目標 Deployment 的副本數和狀態。
- 調用 `get_pods` 確認 Pod 運行情況。
- 調用 `get_events` 檢查近期例外狀況事件。
### 階段二:風險預判 (Pre-flight Check)
必檢清單:
- 副本數: 調用 `get_deployments` 確認當前副本數,只有 1 個副本時任何 Pod 級操作升級為 L2。
- Pod 健康: 調用 `check_pod_health` 確認目標 Pod 是否正常運行。
- 關聯資源: 調用 `get_services` 確認是否有 Service 關聯,評估影響面。
- 近期事件: 調用 `get_pod_events` 檢查是否有進行中的異常(OOMKilled、CrashLoopBackOff)。
### 階段三:安全執行
L1 及以上操作必須先輸出變更預檢報告,包含:操作意圖、目標資源、操作層級、目前狀態、將調用的 MCP 工具及參數、爆炸半徑、復原方案。
等待使用者確認後,調用對應的寫操作工具:
- 縮容/擴容: 調用 `scale_deployment`,指定 deployment 名稱、namespace 和目標副本數。
- 重啟服務: 調用 `restart_deployment` 或 `kubectl_rollout`(action=restart)。
- 應用配置變更: 調用 `kubectl_apply`,傳入 YAML 內容。
- 復原: 調用 `kubectl_rollout`(action=undo)。
## 4. 紅線規則
1. 絕不在未確認 Namespace 的情況下調用寫操作工具。
2. 絕不對 kube-system 命名空間調用 `scale_deployment`、`delete_resource`、`kubectl_apply`,除非使用者二次確認。
3. 絕不調用 `kubectl_generic` 執行 --force --grace-period=0,除非使用者明確知曉後果。
4. 絕不在單副本服務上直接調用 `restart_deployment` 而不警告短暫不可用。
5. 絕不直接調用 `delete_resource` 刪除 Namespace 層級資源,必須給出替代方案。驗證效果:在智能會話中輸入"//k8s 營運守護 將 fronted 服務的副本數減少 1 個",數字員工應返回變更預檢報告:
K8s 變更預檢報告
操作意圖: 將 payment 服務副本數從 3 縮減至 2
目標資源: Deployment/payment
操作層級: L2 高風險寫
目前狀態:
- Replicas: Ready 3/3
- PDB: 無
- HPA: 無
將執行的命令:
$ kubectl scale deployment fronted -n cms-demo --replicas=2
爆炸半徑:
- 影響 Pod 數: 1(將終止 1 個 Pod)
- 預計不可用時間: 0s(滾動縮容,不影響服務)
- 是否有流量中斷風險: 否
復原方案:
$ kubectl scale deployment fronted -n cms-demo --replicas=3
請確認是否執行此操作?確認後,數字員工返回:
已完成 payment 服務的縮容操作:
- 服務位置:cms-demo 命名空間
- 原副本數:3
- 現副本數:2
- 操作狀態:成功
payment 服務目前保持在 2 個副本的配置,運行穩定。MCP 與技能的協同
MCP 工具提供"能力"(能做什麼),技能提供"規範"(怎麼做)。兩者結合使用效果更佳。
以"縮容 payment 服務"為例,數字員工的完整處理流程如下:
載入技能:數字員工識別到這是 K8s 變更操作,自動載入
kubernetes-ops-guardian技能。調用 MCP 查詢目前狀態:
// 調用工具: get_deployments { "namespace": "cms-demo" } // 返回: { "success": true, "context": "minikube", "deployments": [ { "name": "payment", "namespace": "cms-demo", "replicas": 3, "available": 3 } ] }按技能規範進行風險預判:調用
get_services檢查關聯 Service,調用get_pod_events檢查例外狀況事件,評估爆炸半徑,產生變更預檢報告。等待使用者確認後,調用 MCP 執行操作:
// 調用工具: scale_deployment { "name": "payment", "namespace": "cms-demo", "replicas": 2 } // 返回: { "success": true, "context": "minikube", "message": "Deployment payment scaled to 2 replicas" }如果未配置
kubernetes-ops-guardian技能,數字員工仍然可以通過 MCP 工具完成縮容操作,但不會進行風險預判和變更預檢,直接執行可能帶來安全風險。
冷啟動與迭代最佳化
冷啟動建議
首次配置數字員工時,不要試圖一次性寫出完美的規則。建議按以下步驟逐步完善:
先配置預設規則:從上文的 K8s 巡檢規則模板開始,直接複製使用。
跑一輪測試:在智能會話中提幾個典型問題,觀察 AI 的回答品質。
記錄偏差:如果 AI 忽略了某些資料來源(如忽略了 GC 日誌),記錄下來。
補充規則:將遺漏的資料來源和分析邏輯補充到預設規則中。
按需添加技能:當某個情境需要複雜的專項流程時,再配置對應的技能。
迭代最佳化方法
觀察到的問題 | 調整方向 | 操作 |
AI 回答籠統,缺乏深度 | 補充預設規則 | 增加分析邏輯約束和輸出格式要求 |
AI 執行了不該執行的操作 | 增加約束規則 | 在預設規則中添加負向約束 |
AI 無法擷取某類資料 | 接入 MCP 工具 | 添加對應的 MCP 服務 |
AI 在特定情境下流程混亂 | 配置技能 | 為該情境編寫專用 Skill |
AI 許可權不足導致查詢失敗 | 調整 RAM 角色 | 為 RAM 角色添加要求的權限策略 |