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集群,稳定高效,不用半夜起来排查问题。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录