3 分钟装好、5 分钟定位异常:k9s k8s 终端运维实战指南
【免费下载链接】k9s🐶 Kubernetes CLI To Manage Your Clusters In Style!项目地址: https://gitcode.com/GitHub_Trending/k9s/k9s
k9s 是一款面向 Kubernetes 集群管理的终端工具,把 kubectl 式的集群操作收进一个可逛的界面里。本文按任务推进:安装并首次启动、用健康仪表盘 3 分钟找到异常、用三个键把根因查透、再用 Popeye 给集群打出合规分。
安装 k9s 并完成首次启动
周五 18:07,周末前夜,错误率曲线突然抬头。一个核心 Deployment 的滚动更新卡了 20 分钟:期望 5 份,当前 3 份,可用的只有 2 份。你正要打开终端,开始老一套的 kubectl 三连。
先停一下。这个场景,用本文的流程走一遍,从发现到定位,5 分钟内能收住。
工具先就位。三种装法任选其一:
brew install derailed/k9s/k9s # 适合 macOS / Linux 用户 docker run --rm -it -v ~/.kube/config:/root/.kube/config derailed/k9s # 适合不想装本机的 git clone https://gitcode.com/GitHub_Trending/k9s/k9s && cd k9s && make build # 适合想编译源码的装完补两个环境变量,省掉颜色和编辑器的坑:
export TERM=xterm-256color export KUBE_EDITOR=vimk9s 直接复用你现有的~/.kube/config,不用额外登录。它自己的配置在~/.config/k9s(Linux/macOS)或%LOCALAPPDATA%\k9s(Windows)。放一份最小配置进去就够启动:
k9s: refreshRate: 2 readOnly: false ui: enableMouse: true skin: dracula输入k9s回车,默认落在 Pod 列表。看到列表在刷新,安装这步就收工了。
用健康仪表盘 3 分钟找到异常资源
进入 k9s 后第一件事:按:进入命令模式,输入pulses回车。这就是集群健康仪表盘。
每个仪表是一行文字,格式固定为资源(总数:当前数:异常数)。读法只有一条:只看第三个数字,为 0 不用管,非 0 才轮到它。比如Events(56:47:9)意味着 9 条事件等你过目。
仪表盘之外的三个高频键:
- 选中某个异常仪表 → 按
Enter,直接钻进对应资源视图; - 列表里按
/输入关键词,实时过滤; - 数据不新鲜时按
ctrl-r强制刷新。
切视图也一样直接::加资源别名回车,pods、dp、svc、ns、sts都行。切视图、过滤、刷新,三个键覆盖日常巡检。
颜色是第二套信号:状态列标红的行就是异常行,红边框的仪表说明该类别有故障。扫一眼颜色和第三位数字,3 分钟能把"哪里不对劲"说清楚。
把根因查透:日志、describe、容器 shell
定位到那个红行,比如 CrashLoopBackOff 的 Pod,接下来是标准的 k9s 排障三连。
- 选中 Pod → 按
l打开日志。看最后一屏的报错栈,判断是启动即崩还是运行中挂掉。日志页里b上翻、f下翻、ctrl-t回顶部、ctrl-u到底部。 - 选中 Pod → 按
d看 describe。只翻到 Events 区,探针失败、镜像拉取失败、挂载错误都写在最后几行。 - 选中 Pod → 按
s进容器 shell。手动跑一遍它的启动命令,复现猜想,验证完exit出来。
Pod 列表里 READY、STATUS、RESTARTS、CPU、MEM 一排列开,重启次数两位数、状态标红,就是重点嫌疑人。想看全部命名空间?点底部状态栏的命名空间标签 → 选All。
三连回答的是同一个问题:它死在哪、怎么死的、死前在干什么。三步走完,多数线上故障的根因已经浮出水面。
重启、扩缩容、删 Pod:三种现场操作与三条生产红线
查到根因,动手。操作都在选中对象之后发生:
- 选中卡住的 Deployment → 按
Enter→ 菜单里选 Restart,全量副本滚动重建; - 同一个菜单里选 Scale,直接改副本数;
- 选中垃圾 Pod → 按
ctrl-d→ 输入y确认,让它原地重建。
动手前先看一眼列表:期望副本、当前副本、可用副本,三列数字对不齐就说明更新卡在半路,这时 Restart 比 Scale 更对症。
生产环境的三条底线,写进肌肉记忆:
- 巡检场景在配置里把
readOnly置为true,防手滑; - k9s 的 kubeconfig 配最小 RBAC,别直接给 admin;
- 终端显示异常时,先查
TERM是否 256 色、字体是否覆盖特殊符号,再怀疑工具。
用 Popeye 给 k8s 集群打分并写进周报
排障是救火,体检才是习惯。内置扫描器不用另装:命令模式输入popeye,回车,它会对集群各类资源做合规检查。
结果按资源类型分组,每行给出 SCORE、SCANNED,以及 OK / INFO / WARNING / ERROR 四档计数。分档标准很直白:
- 低于 50 分:高风险,本周必须处理;
- 50 到 80 分:需要改进,进整改清单;
- 80 分以上:合规,可以安心。
常见丢分项就那几类:networkpolicy缺失、容器没有资源限制、镜像没锁版本。建议固定每周五跑一次,把评分截图贴进周报——数字比"集群很健康"有说服力。
把 k9s 快捷键、主题和插件改成你的习惯
工具顺手之后,让它迁就你。三件事,每件一个文件。
k9s 快捷键。配置目录建hotkey.yaml,把高频视图绑到 Shift 键上:
hotKeys: shift-1: shortCut: Shift-1 description: 查看部署 command: dp shift-2: shortCut: Shift-2 description: 集群安全扫描 command: popeye主题。skins/目录里躺着 dracula、nord、monokai 等一批配色,在k9s.ui.skin里写名字即生效。长时间盯屏,选暗色系。
k9s 插件配置。插件是 k9s 的扩展点,把团队零散命令收编进同一界面。仓库里现成的插件目录可以参考:plugins/。比如绑一个日志跟踪:
plugins: follow-pod-logs: shortCut: Ctrl-L description: 跟踪 Pod 日志 scopes: [pods] command: kubectl args: ["logs", "-f", "$NAME", "-n", "$NAMESPACE"]$NAME、$NAMESPACE会自动替换成你当前选中资源的值。
用基准测试验证调优
调优别凭感觉。流程是:Pod 视图选中暴露端口的 Pod → 按SHIFT-F指定本地端口建立 port-forward → 切到pf视图 → 选中这条转发 → 按ctrl-b发起基准测试(默认 1 并发、200 请求)→ 用:be查看结果报告。
每个集群/上下文对应一份benchmarks.yaml,可以覆盖并发数、请求数、请求路径:
benchmarks: defaults: concurrency: 1 requests: 200 containers: default/nginx:nginx: concurrency: 4 requests: 2000 http: path: /healthz method: GET改了资源请求值、滚动更新之后,再压一次,两份报告一对比,优化有没有效,数字说了算。
k9s 能省多少:对比表与今天就做的三件事 🎯
| 典型任务 | kubectl 时代 | k9s 时代 | 削减结果 |
|---|---|---|---|
| 找到问题 Pod | 2 条命令加肉眼比对 | 列表里盯红行 | 2 条命令 → 0 条 |
| 追一个失败容器 | 拼 2 条命令(logs、exec) | 选中行按l/s | 2 条命令 → 2 个键 |
| 上百条里锁定目标 | 手写 label 选择器 | /输入即过滤 | 1 条长命令 → 1 个键 |
| 集群合规打分 | 单独部署 Popeye | :popeye一个键 | 分钟级部署 → 秒级出分 |
今天就做的三件事:
- 跑一条安装命令 → 敲
k9s,确认 Pod 列表正常刷新; - 按
:pulses,逐行只看第三个数字,非 0 的那行按Enter钻进去确认; - 在 Pod 列表按
/过滤出异常 Pod → 按l看日志 → 按d看描述,完成一次真实排障。
周五那个卡在 2/5 的 Deployment,有这套动作,下次你能在 5 分钟内定位,当天修完再走。终端不是负担,是驾驶舱;k9s 的意义,就是把告警响起的头几分钟,从手忙脚乱变成按部就班。
【免费下载链接】k9s🐶 Kubernetes CLI To Manage Your Clusters In Style!项目地址: https://gitcode.com/GitHub_Trending/k9s/k9s
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考