Kubernetes 1.25在2022年8月正式发布,带来了很多新特性:PodSecurityPolicy正式移除、cgroup v2稳定、Ephemeral Containers稳定、CRD表达式语言验证等。

但K8s本身只是一个平台,要高效地使用和运维K8s,还需要配合合适的工具。本文推荐15个K8s 1.25+生态下的实用工具,涵盖开发、调试、监控、安全、成本优化等多个方面。

一、开发和部署工具

1. kubectx + kubens

这是两个配套使用的小工具,用来快速切换K8s上下文和命名空间。

  • kubectx:快速切换集群上下文
  • kubens:快速切换命名空间

用kubectl操作多个集群时,每次都要敲很长的--context-n参数,很麻烦。用kubectx和kubens,一条命令就能切换,还支持模糊匹配和交互式选择。

安装也很简单,用Homebrew或直接下载二进制文件就行。

适用场景: 同时操作多个K8s集群和命名空间的开发者和运维。


2. k9s

k9s是一个终端UI工具,用来管理K8s集群。

它提供了一个交互式的终端界面,可以:

  • 查看各种K8s资源(Pod、Service、Deployment等)
  • 实时查看日志
  • 进入容器执行命令
  • 编辑和删除资源
  • 查看资源的事件和描述
  • 端口转发

k9s的界面很直观,快捷键丰富,操作效率比kubectl高很多。而且它是实时更新的,能看到资源的最新状态。

适用场景: 日常运维和调试,喜欢终端操作的人。


3. Helm

Helm是K8s的包管理工具,用来管理K8s应用的部署。

  • 用Chart描述K8s资源的模板
  • 用Release管理应用的版本
  • 支持版本回滚、依赖管理、值配置

K8s 1.25中,Helm 3已经很成熟了。用Helm部署应用,比手写YAML文件高效很多,尤其是复杂的应用(如数据库、中间件),官方都有现成的Chart。

适用场景: 应用部署和版本管理,尤其是复杂应用。


4. Skaffold

Skaffold是一个用于K8s开发的命令行工具,支持开发工作流的自动化。

它可以:

  • 监听代码变化,自动构建镜像
  • 自动部署到K8s集群
  • 支持热重载,代码修改后自动更新
  • 支持多种构建工具(Docker、Kaniko、Buildpacks)
  • 支持多种部署工具(kubectl、Helm、Kustomize)

用Skaffold,开发者可以专注于写代码,不用手动构建和部署。改完代码,保存,几秒钟后就能在集群中看到效果。

适用场景: K8s应用的日常开发,提升开发效率。

二、调试和排障工具

5. kubectl-debug

kubectl-debug是一个kubectl插件,用来调试K8s中的Pod。

传统的调试方式是在镜像中安装调试工具(如curl、ping、tcpdump),但这会让镜像变大,也不安全。

kubectl-debug的方式是:启动一个临时的调试容器,和目标Pod共享网络和进程命名空间,就可以在调试容器中用各种工具调试目标Pod,不需要修改目标镜像。

K8s 1.25中,Ephemeral Containers已经稳定了,kubectl-debug也支持用Ephemeral Containers的方式调试。

适用场景: 调试生产环境中的Pod,尤其是镜像中没有调试工具的情况。


6. stern

stern是一个多Pod日志聚合工具。

用kubectl logs只能看一个Pod的日志,而且Pod重建后日志就断了。stern可以:

  • 同时查看多个Pod的日志
  • 用正则匹配Pod名称
  • 实时跟踪新创建的Pod
  • 不同Pod的日志用不同颜色区分
  • 支持过滤和高亮

排查问题的时候,经常需要同时看多个Pod的日志,stern非常方便。

适用场景: 多Pod日志查看,排查分布式系统的问题。


7. kubectl-tree

kubectl-tree是一个kubectl插件,用树状结构展示K8s资源的关联关系。

比如,查看一个Deployment的资源树,会显示:

  • Deployment

- ReplicaSet - Pod - Container

这样可以直观地看到资源之间的从属关系,快速定位问题。比如,Pod起不来,可以通过资源树快速找到是ReplicaSet的问题还是Deployment的问题。

适用场景: 排查资源关联问题,理解K8s资源的层级关系。

三、监控和可观测性工具

8. Prometheus + Grafana

这是K8s监控的经典组合,不用多说。

  • Prometheus:时序数据库,采集和存储监控指标
  • Grafana:可视化工具,展示监控仪表盘

K8s 1.25中,Prometheus Operator已经很成熟了,用它可以快速部署Prometheus监控栈。配合kube-state-metrics和node-exporter,可以监控集群、节点、Pod、容器等各个层面的指标。

Grafana有很多现成的K8s仪表盘,导入就能用,非常方便。

适用场景: K8s集群的全面监控。


9. Loki

Loki是一个轻量级的日志聚合系统,由Grafana团队开发。

和ELK(Elasticsearch + Logstash + Kibana)相比,Loki更轻量,成本更低。它的设计理念是:只索引元数据(标签),不索引日志内容,日志内容存在对象存储中。

Loki和Grafana集成得很好,可以在Grafana中同时查看指标和日志,排查问题很方便。

K8s中用Promtail采集日志,发送到Loki,然后在Grafana中查询和展示。

适用场景: 日志聚合和查询,尤其是已经在用Grafana的团队。


10. Jaeger

Jaeger是一个分布式链路追踪系统,用来排查微服务架构中的性能问题。

在K8s中部署微服务,一个请求可能经过多个服务,出了问题很难定位是哪个服务慢。用Jaeger,可以看到请求的完整链路,每个服务的耗时,快速定位瓶颈。

Jaeger支持OpenTelemetry标准,可以和很多框架集成。K8s中用Jaeger Operator部署很方便。

适用场景: 微服务架构的分布式追踪,排查性能问题。

四、安全工具

11. Trivy

Trivy是一个安全扫描工具,由Aqua Security开发。

它可以扫描:

  • 容器镜像的漏洞
  • 配置文件的安全问题(如K8s YAML、Dockerfile、Terraform)
  • 代码仓库的依赖漏洞
  • 基础设施即代码的安全问题

Trivy很容易集成到CI/CD流程中,在构建镜像时自动扫描,发现高危漏洞就阻止部署。

K8s 1.25中,PodSecurityPolicy被移除了,用Trivy扫描镜像和配置,可以提前发现安全问题。

适用场景: 容器镜像和配置文件的安全扫描,DevSecOps。


12. kube-bench

kube-bench是一个K8s安全基准检查工具,检查K8s集群是否符合CIS(互联网安全中心)的安全基准。

它会检查:

  • API Server的安全配置
  • etcd的安全配置
  • 控制平面组件的安全
  • 节点的安全配置
  • RBAC配置
  • 网络策略

运行kube-bench,会生成一份报告,列出不符合安全基准的项,以及修复建议。

K8s 1.25中,安全越来越重要,用kube-bench定期检查集群安全配置,是一个好习惯。

适用场景: K8s集群的安全基准检查,合规性审计。


13. Kyverno

Kyverno是一个K8s策略引擎,用来管理和强制执行K8s资源的策略。

和OPA/Gatekeeper相比,Kyverno更简单,不需要学习新的语言(Rego),策略就是K8s的CRD,用YAML编写。

Kyverno可以:

  • 验证资源是否符合策略(如镜像必须来自可信仓库)
  • 变更资源(如自动添加标签、注解)
  • 生成资源(如为每个命名空间自动生成NetworkPolicy)
  • 镜像签名验证

K8s 1.25移除了PodSecurityPolicy,Kyverno是一个很好的替代方案,可以实现更强大的策略管理。

适用场景: K8s策略管理,替代PodSecurityPolicy,安全合规。

五、成本优化工具

14. Kubecost

Kubecost是一个K8s成本监控和优化工具。

它可以:

  • 按命名空间、团队、应用、标签等维度统计成本
  • 显示资源使用率,发现浪费
  • 提供成本优化建议
  • 预测未来成本
  • 支持多云和混合云

很多K8s集群存在资源浪费的问题:申请的CPU和内存比实际使用多很多。用Kubecost,可以看到哪些应用在浪费资源,然后调整资源请求和限制,节省成本。

适用场景: K8s成本监控和优化,尤其是多团队共享集群的情况。


15. Descheduler

Descheduler是一个K8s调度优化工具,用来重新调度已经运行的Pod。

K8s的默认调度器只在Pod创建时调度,Pod运行后就不会再移动了。但随着时间推移,集群的资源分布可能变得不均衡,有些节点资源紧张,有些节点空闲。

Descheduler可以根据策略,重新调度Pod:

  • 移除节点上的Pod(节点维护)
  • 平衡节点间的资源使用
  • 移除不符合亲和性规则的Pod
  • 移除重复的Pod

K8s 1.25中,Descheduler已经比较成熟了,可以作为Deployment运行在集群中,定期优化Pod分布。

适用场景: 集群资源优化,节点维护,负载均衡。

六、工具选择建议

这么多工具,不可能都用。根据团队的情况,选择合适的工具。

1. 小团队(5人以下)

  • 基础:kubectx + kubens、k9s、Helm
  • 监控:Prometheus + Grafana
  • 调试:stern
  • 安全:Trivy(CI/CD中集成)

2. 中等团队(5-20人)

  • 小团队的所有工具
  • 开发:Skaffold
  • 调试:kubectl-debug、kubectl-tree
  • 日志:Loki
  • 安全:kube-bench、Kyverno
  • 成本:Kubecost

3. 大团队(20人以上)

  • 中等团队的所有工具
  • 追踪:Jaeger
  • 调度优化:Descheduler
  • 更完善的监控和告警体系
  • 自定义工具开发

七、工具使用的注意事项

1. 不要为了用工具而用工具

工具是为了提升效率,不是为了炫技。如果一个工具增加了复杂度,但没有带来实际的效率提升,就不要用。

2. 先掌握基础,再用工具

kubectl是基础,一定要先掌握。工具只是辅助,不能代替对K8s原理的理解。遇到问题,还是要能看懂YAML,理解K8s的工作原理。

3. 注意工具的版本兼容性

K8s更新很快,工具也要跟着更新。升级K8s版本前,要检查工具是否兼容新版本。尤其是K8s 1.25移除了PodSecurityPolicy,一些依赖它的工具可能需要升级。

4. 统一工具链

团队内尽量统一工具链,避免每个人用不同的工具,导致沟通成本高。可以制定团队的工具规范,推荐使用的工具和版本。

八、写在最后

K8s 1.25带来了很多新特性,也让K8s生态更加成熟。配合合适的工具,可以大幅提升开发和运维效率。

本文推荐的15个工具,涵盖了开发、调试、监控、安全、成本优化等多个方面。你可以根据团队的情况,选择合适的工具,逐步引入。

工具是死的,人是活的。再好的工具,也要人来用。重要的是理解K8s的原理,掌握排查问题的方法,工具只是辅助。

2022年了,K8s已经成为容器编排的事实标准。越来越多的团队在使用K8s,也越来越依赖K8s生态中的工具。掌握这些工具,能让你在K8s的世界里游刃有余。

最后,用一句话总结:"工欲善其事,必先利其器。选对工具,事半功倍。但不要忘了,工具只是手段,解决问题才是目的。"

愿你的K8s集群,稳定高效,不用半夜起来排查问题。