一、k9s简介
k9s 不是替代 kubectl,是kubectl 的终端增强 TUI 工具 ,复用
~/.kube/config,不需要在 k8s 集群内部部署任何组件,只装在操作机 / 跳板机上即可。
1. 终端全屏实时界面,不用反复敲 kubectl
- 界面自动 2 秒刷新 ,相当于自带
watch kubectl get xxx,Pod 状态、重启次数、CPU 内存实时看,不用反复复制命令执行。 - 跳板机 / 堡垒机无浏览器场景下,不需要部署 k8s dashboard 网页,直接在 shell 里面看集群全貌。
2. 快捷键大幅提升排错效率(高频)
不用记忆一长串 kubectl 参数,光标选中资源按按键即可操作:
| 快捷键 | 等价 kubectl 操作 |
|---|---|
l |
查看 Pod 实时日志 kubectl logs -f podname |
s |
进入 Pod 容器终端 kubectl exec -it podname |
d |
describe 资源,看事件、报错原因 |
y |
查看原始 yaml |
e |
直接编辑 yaml,保存即 apply 生效 |
/ |
搜索过滤资源,快速找异常 pod |
:pod / :deploy / :svc |
快速切换资源视图 |
排查 Pod CrashLoopBackOff 问题,k9s 几下按键就能看日志 + 事件,不用手敲一长串命令。
3. 资源关联跳转,排查链路连贯
从 Pod 可以直接跳转到所属 Deployment、关联 Service、Event 事件;看完返回,光标还停留在原条目。 比如 Pod 异常,直接跳转看上层 deployment,不用复制粘贴 pod 名字,减少复制出错的麻烦。
4. 多集群、多命名空间快速切换
- 一键切换 kubeconfig 上下文(多套 k8s 集群来回切换)
- 数字
0一键看所有命名空间 全部 Pod,不用反复写-n xxx;快速切换 ns,省去敲命名空间名字。
5. 原生支持 CRD 自定义资源
很多自定义 CRD(istio、prometheus 等),记不住资源短名称;k9s 直接:crdname就可以打开视图,不需要查 apiVersion 和资源名。
6. 轻量无侵入,零集群侧依赖
- 只是客户端二进制程序 ,不需要在 k8s 集群安装 Pod、Deployment,不会占用集群资源;卸载直接删除
/usr/local/bin/k9s文件即可。 - 权限完全复用 kubeconfig,kubectl 有什么权限 k9s 就有什么权限,不会新增安全风险。
7. 附加实用小能力
- X‑Ray 视图:可视化展示资源的关联关系(deployment→pod→svc),快速定位资源绑定异常。
- Popeye 集群巡检:一键对集群做健康扫描,给出风险打分,找出闲置、配置错误资源。
- 支持插件,可以自定义快捷键执行脚本。
8. 对比 kubectl / Dashboard
| 工具 | 优点 | 缺点 |
|---|---|---|
| kubectl | 适合脚本、自动化、CI | 手动排查要敲大量命令,复制名字麻烦 |
| k8s‑dashboard | 浏览器可视化 | 需要部署到集群,堡垒机环境访问麻烦,有安全维护成本 |
| k9s | 终端内高效排错,轻量,跳板机友好 | 纯终端,复杂报表不如 web 页面 |
9. 适合什么场景
- 日常集群巡检、Pod 故障定位(最常用)
- 堡垒机、跳板机操作集群,没有浏览器
- 高频查看日志、进容器调试
- 多 namespace、多集群运维
- k9s 适合交互式手动运维排查;写 shell 脚本自动化还是继续用 kubectl。
二、k9s安装
k8s兼容列表如下,1.26.1以上的k8s可以选择最新版本
| k9s | k8s client |
|---|---|
| >= v0.27.0 | 1.26.1 |
| v0.26.7 - v0.26.6 | 1.25.3 |
| v0.26.5 - v0.26.4 | 1.25.1 |
| v0.26.3 - v0.26.1 | 1.24.3 |
| v0.26.0 - v0.25.19 | 1.24.2 |
| v0.25.18 - v0.25.3 | 1.22.3 |
| v0.25.2 - v0.25.0 | 1.22.0 |
| <= v0.24 | 1.21.3 |
安装步骤如下:
bash
#下载
wget https://github.com/derailed/k9s/releases/download/v0.51.0/k9s_Linux_amd64.tar.gz
#解压,直接得到二进制k9s程序
tar -zxvf k9s_Linux_amd64.tar.gz
#放到全局命令
mv k9s /usr/local/bin/
chmod +x /usr/local/bin/k9s
#验证
k9s version
进入节点,输入k9s命令,界面如下:
