简介

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 工具链!

K8stools工具的更多相关文章

  1. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  2. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  3. 应用工具 .NET Portability Analyzer 分析迁移dotnet core

    大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码.与构建不同的应用以面向多个平台相比,这种方法更加容易.如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候 ...

  4. .NetCore中的日志(2)集成第三方日志工具

    .NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...

  5. dll文件32位64位检测工具以及Windows文件夹SysWow64的坑

    自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...

  6. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  7. 渗透测试工具BurpSuite做网站的安全测试(基础版)

    渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...

  8. CorelDRAW X8 如何破解激活(附国际版安装包+激活工具) 2016-12-15

    之前有位搞平面的好友“小瘦”说CDR X8无法破解,只能用X7.呃……呃……呃……好像是的 其实CDR8难激活主要在于一个点“没有离线激活了,只可以在线激活”,逆天不是专供逆向的,当然没能力去破解,这 ...

  9. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  10. 10个最好用的HTML/CSS 工具、插件和资料库

    大家在使用HTML/CSS开发项目的过程中,有使用过哪些工具,插件和库?下面介绍的10种HTML/CSS工具,插件和资料库,是国外程序员经常用到的. Firebug Lite FirebugLite ...

随机推荐

  1. Java中List通过Lambda实现排序

    目录 1.正常排序,1,2,3 2.倒序 3,2,1 1.正常排序,1,2,3 list=list.stream().sorted(Comparator.comparing(VipCardVo::ge ...

  2. win11 - 设置FTP服务详细教程

    题记部分 一.开启FTP服务 https://blog.csdn.net/qq_42142258/article/details/131725760 二.配置FTP服务 https://blog.cs ...

  3. 深入理解C++ 空类大小

    在C++中,规定空类(即类中没有任何数据成员.成员函数.虚函数等成员的类)的大小为1字节,这背后主要有以下几方面的原因: 保证对象的唯一性和可区分性 在C++的面向对象编程模型中,对象是类的实例化结果 ...

  4. 【译】Visual Studio 中新的强大生产力特性

    有时候,生活中的小事才是最重要的.在最新版本的 Visual Studio 中,我们增加了一些功能和调整,目的是让您脸上带着微笑,让您更有效率.这里是其中的一些列表,如果您想要完整的列表,请查看发行说 ...

  5. 【Bug记录】defineEmits 在 TS 项目报错

    前言 单文件组件 <script setup> 是 Vue3.2 版本后非常流行的写法. 但是在开发过程中,按照官网使用 defineEmits ,结果项目报错,无法运行. 错误截图 Un ...

  6. HTTP 尝试获取 Client IP

    HTTP 中获取 Client IP 相关策略需求, 在当下网络环境中多数只能提供建议作用. 更多的是 通过其它唯一标识来挖掘更多潜在价值. 本文主要就一个内容, 如何最大可能尝试在 HTTP 请求中 ...

  7. mongodb logical sessions can't have multiple authenticated users

    前言 使用 mongodb db.auth,切换用户时,报以下错误 logical sessions can't have multiple authenticated users 原因是 mongo ...

  8. OpenGL ES与GLSL ES各版本对应说明

    OpenGL ES 3.2 OpenGL ES 3.2 and OpenGL ES Shading Language 3.20 OpenGL ES 3.1 OpenGL ES 3.1 and Open ...

  9. bug|SCSS相关问题

    参考链接 [系统学习css]scss和sass以及 less的关系,node-sass.dart-sass和sass-loader是啥

  10. 【Java】操作数据库

    工具: eclipse MySQL Navicat for MySQL MySQL 连接驱动:mysql-connector-java-5.0.4-bin.jar SQL 代码 CREATE TABL ...