K8stools工具
??簡介
K8stools 是一個 Kubernetes 日常運維輔助工具集,旨在提升運維效率,輔助平臺治理與資源優化。功能涵蓋資源分析、趨勢評估、異常檢測、行為采集、成本估算等常見場景,適用于 DevOps、SRE、平臺工程團隊。
??功能模塊
| 模塊名稱 | 功能說明 |
|---|---|
| costEstimator | 成本估算 |
| cpu | 獲取k8s的cpu使用情況 |
| paradise | k8s理想情況分配 |
| poderrors | 異常檢查 |
| runtimeInspect | 采集運行中的 Pod 容器行為信息(進程、端口、環境變量) |
| trend | 基于 Prometheus 的資源使用趨勢分析與建議 |
?? 配置文件說明(config.yaml)
kubeconfig: /root/.kube/config
namespace:
- {namespace}-prod
prometheus: http://prom.example.net
cost:
cpuPrice: 4000 # 單臺機器價格(單位元)
totalCpu: 16 # 單臺機器 CPU 核數
?? 各子工具設計邏輯
?? paradise - 理想資源建議工具
CPU 建議規則:
| 類型 | 設計邏輯 |
|---|---|
| Requests | 當前使用量的 50%~80%,保證調度時有資源可用 |
| Limits | 當前使用量的 100%~150%,防止異常飆高占滿節點 |
| 特殊處理 | 使用低于 50m 的容器 → 默認給 50m,避免調度失敗;高于 1000m 提示設置上限 |
內存建議規則:
| 類型 | 設計邏輯 |
|---|---|
| Requests | 當前使用量的 70%~100%,確保穩定調度 |
| Limits | 當前使用量的 150%~200%,保留 buffer 防止 OOM |
| 特殊處理 | 對 sidecar / agent 等輕量容器,給最小起點值如 64Mi |
?? trend - 資源趨勢分析工具
數據來源:Prometheus 查詢
| 指標 | 查詢方式 |
|---|---|
| 平均 CPU 使用量 | avg_over_time(container_cpu_usage_seconds_total[1w])(單位:m) |
| 最大 CPU 使用量 | max_over_time(container_cpu_usage_seconds_total[1w])(單位:m) |
| 平均/最大內存使用量 | 類似用 container_memory_usage_bytes 查詢,并換算成 MiB |
推薦策略(保守 & 穩健)
| 類型 | 推薦計算公式 |
|---|---|
| CPU Requests | ceil(平均 CPU 使用量 × 1.2) |
| CPU Limits | ceil(最大 CPU 使用量 × 1.5) |
| 內存 Requests | ceil(平均內存使用量 × 1.2) |
| 內存 Limits | ceil(最大內存使用量 × 1.5) |
?? poderrors - 異常 Pod 檢查工具
功能說明:
- 遍歷所有或指定命名空間下的 Pod
- 檢查所有處于異常狀態的容器(如 CrashLoop、ImagePullBackOff、OOMKilled 等)
- 輸出字段:
| Namespace | Pod | Container | Reason | Message | Restart Count | Age |
|---|---|---|---|---|---|---|
| default | api-xxx | app | CrashLoopBackOff | Back-off restarting failed container | 5 | 3m |
?? runtimeInspect - 容器行為采集工具
功能說明:
- 采集運行中 Pod 的詳細信息,包括:
- 容器內進程列表
- 監聽端口信息
- 環境變量
使用場景:
- 排查線上故障時快速查看容器內部運行情況
- 無需進入容器即可采集運行行為(非入侵式)
?? costEstimator - 成本估算工具
計算模型:
- 基于你提供的每臺機器:
- CPU 核數(如:16)
- 單價(如:4000元)
計算邏輯:
| 步驟 | 說明 |
|---|---|
| 每核價格 | 單價 / 總 CPU 數 |
| 容器請求費用 | CPU Request (m) × 每毫核價格 |
| 每月總費用 | 容器費用 × 24 × 30(按 30 天、全天運行估算) |
輸出字段:
| Namespace | Pod | Container | CPU Request (m) | CPU Cost (元) | Total Cost (元/月) |
|---|
?? 示例命令
k8stools paradise -f config.yaml # 理想資源建議
k8stools trend -f config.yaml # 資源趨勢分析
k8stools poderrors -f config.yaml # 異常 Pod 檢查
k8stools runtimeInspect -f config.yaml # 容器運行時行為采集
k8stools costEstimator -f config.yaml # 成本估算
# 計算資源使用情況的理想配置建議
k8stools paradise -f config.yaml
# 基于 Prometheus 歷史數據的趨勢分析
k8stools trend -f config.yaml
# 檢查所有命名空間下異常狀態的 Pod
k8stools poderrors -f config.yaml
# 查看容器運行時信息(進程、端口、環境變量)
k8stools runtimeInspect -f config.yaml
# 根據配置中機器單價和總 CPU 數進行成本估算
k8stools costEstimator -f config.yaml
?? 建議輸出目錄結構
統一將輸出放到 output/ 目錄,并添加時間戳,便于追溯與比較:
output/
├── cpu_info_2025-04-21.csv
├── cost_estimate_2025-04-21.csv
└── resource_trend_2025-04-21.csv
?? 聯系與反饋
如有建議或需求,歡迎反饋或提交 PR,一起打磨出更適合生產的 K8s 工具鏈!

浙公網安備 33010602011771號