kubectl 之外:让 K8s 日常运维不那么痛的工具

kubectl 之外:让 K8s 日常运维不那么痛的工具

刚上 K8s 时,每次排查问题都要敲一大串命令:kubectl get pods -n productionkubectl logs -f order-service-67d8f9c5b-xkp2t -n production……Pod 名每次都在变,Namespace 还要手动指定,效率极低。这四个工具,解决的正是这个摩擦。


k9s:终端里的 K8s 可视化

# 安装(macOS)
brew install derailed/k9s/k9s

# Linux 直接下载二进制
curl -sS https://webinstall.dev/k9s | bash

# 启动
k9s

k9s 是一个终端 UI,启动后实时显示所有 Pod 的状态、重启次数、CPU/内存用量。

常用快捷键:

  • :namespace:ns — 切换 Namespace
  • l — 查看当前选中 Pod 的日志(实时滚动)
  • s — 进入容器 Shell(等同于 kubectl exec -it
  • d — describe 当前资源(等同于 kubectl describe
  • ctrl+d — 删除当前资源
  • / — 在当前视图内过滤搜索

最常用的场景:部署完新版本后,在 k9s 里实时看 Pod 滚动更新状态,哪个 Pod 在重启、哪个已经 Ready,一眼都能看到。


OpenLens:给需要 GUI 的场景用

OpenLens 是 Lens 的开源版,适合两类场景:

  • 需要同时管理多个 K8s 集群(集群列表在左侧可以直接切换)
  • 和不熟悉终端的同事(前端、测试)共享运维权限

相比 k9s,OpenLens 能直接看到资源的 CPU/内存使用趋势图,排查内存泄漏时比较直观。缺点是启动慢、比较重,不适合当主力工具频繁切换。


kubectl 别名:减少重复输入

把以下配置加到 ~/.bashrc~/.zshrc

alias k='kubectl'
alias kgp='kubectl get pods'
alias kgpn='kubectl get pods -n'
alias kgpa='kubectl get pods -A' # 所有 Namespace
alias klf='kubectl logs -f'
alias kex='kubectl exec -it'
alias kdp='kubectl describe pod'
alias kap='kubectl apply -f'

# 快速切换 Namespace(需要 kubectx/kubens)
alias kns='kubens'
alias kctx='kubectx'

k get pokubectl get pods 快一倍不止,天天敲的命令值得缩短。


Stern:多 Pod 日志聚合

# 安装
brew install stern

# 查看所有以 order-service 开头的 Pod 的日志流
stern order-service -n production

# 带时间戳,并用关键词过滤
stern order-service -n production --since 10m | grep ERROR

微服务场景下,一个服务通常跑 2~3 个 Pod 实现高可用。kubectl logs 一次只能看一个 Pod,如果问题在某个实例上偶发,很可能看错了 Pod。Stern 会同时 tail 所有匹配的 Pod 日志,并用不同颜色标注 Pod 来源。


一句话总结

工具解决的是操作效率,K8s 真正的复杂度在配置和网络——工具替代不了理解。