概述

K9s 是一个强大的 Kubernetes CLI 工具,提供直观的终端 UI 界面,让集群管理变得轻松高效。相比传统的 kubectl 命令,K9s 提供实时监控、快捷操作和资源管理等功能。

核心特性:

  • 🖥️ 终端 UI 界面,无需 Web Dashboard
  • ⚡ 实时资源监控和日志查看
  • 🔍 强大的搜索和过滤功能
  • 📊 集群健康状态评分
  • 🔐 支持多集群管理

适用场景:

  • 日常集群运维管理
  • 快速故障排查
  • 资源状态监控
  • 多集群切换

官方仓库: https://github.com/derailed/k9s

安装

Linux

1
2
3
4
5
6
7
8
# 下载最新版本
wget https://github.com/derailed/k9s/releases/download/v0.32.0/k9s_Linux_amd64.tar.gz

# 解压到系统路径
tar -zxf k9s_Linux_amd64.tar.gz -C /usr/local/bin

# 验证安装
k9s version

macOS

1
2
3
4
5
# 使用 Homebrew 安装
brew install k9s

# 或使用 MacPorts
sudo port install k9s

Windows

1
2
3
4
5
# 使用 Chocolatey
choco install k9s

# 使用 Scoop
scoop install k9s

验证安装

1
2
3
4
5
# 查看版本信息
k9s version

# 查看配置信息
k9s info

基础操作

启动 K9s

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 正常启动
k9s

# 只读模式(推荐生产环境)
k9s --readonly

# 指定命名空间
k9s -n kube-system

# 指定kubeconfig
k9s --kubeconfig ~/.kube/config

# 连接特定集群
k9s --context my-cluster

界面导航

基本导航快捷键:

快捷键功能说明
?显示帮助查看当前界面的所有快捷键
:资源类型切换资源视图:pods, :deploy, :svc
Esc返回上一级退出当前模式或界面
Ctrl+C退出 K9s完全退出程序
:q退出同 Ctrl+C

资源查看

常用资源快捷输入:

1
2
3
4
5
6
7
8
9
:alias        # 查看所有资源缩写
:pods # 查看 Pods
:po # Pods 缩写
:deploy # 查看 Deployments
:svc # 查看 Services
:ns # 查看 Namespaces
:nodes # 查看 Nodes
:cm # 查看 ConfigMaps
:secrets # 查看 Secrets

指定命名空间查看:

1
2
:pods default          # 查看 default 命名空间的 Pods
:deploy kube-system # 查看 kube-system 的 Deployments

核心功能

资源操作

基础操作快捷键:

快捷键功能说明
d查看描述等同于 kubectl describe
y查看 YAML等同于 kubectl get -o yaml
e编辑资源使用 vim 编辑,:wq 保存生效
v查看详情View 模式
l查看日志查看 Pod 日志
sShell 访问等同于 kubectl exec -it
Ctrl+D删除资源需要确认
Ctrl+K强制删除无需确认

高级操作:

快捷键功能说明
Ctrl+R刷新界面刷新当前资源状态
Ctrl+WWide 模式显示更多信息列
Ctrl+Z切换错误资源只显示异常状态资源
Space标记资源高亮显示选中资源
c复制内容复制当前列的值

排序和过滤

排序功能:

快捷键排序依据说明
Shift+N按名称排序Name
Shift+C按 CPU 排序CPU 使用量
Shift+M按内存排序Memory 使用量
Shift+I按 IP 排序IP 地址
Shift+A按 Age 排序创建时间

过滤功能:

1
2
3
4
/nginx           # 过滤包含 "nginx" 的资源
/!nginx # 排除包含 "nginx" 的资源
/-l app=nginx # 按 Label 过滤
/-f nginx # 模糊匹配过滤

过滤示例:

1
2
3
4
# 在 Pods 视图
/Running # 只显示 Running 状态的 Pod
/!Running # 排除 Running 状态的 Pod
/-l tier=frontend # 只显示带有 tier=frontend 标签的 Pod

日志查看

日志操作:

快捷键功能说明
l查看日志打开日志视图
0跳转到最新查看最新日志
w自动换行切换日志换行模式
f跟随日志实时滚动显示
/搜索日志搜索特定内容
Esc退出日志返回资源列表

日志查看技巧:

1
2
3
4
5
# 在 Pod 视图按 l 进入日志
# 如果 Pod 有多个容器,会提示选择
# 按 0 查看最新日志
# 按 w 切换换行
# 按 / 搜索关键字

Shell 访问

进入容器:

1
2
3
4
5
# 在 Pod 视图按 s
# 等同于 kubectl exec -it pod-name /bin/sh

# 多容器 Pod 会提示选择容器
# 使用 exit 退出 Shell

端口转发

端口转发操作:

快捷键功能说明
Shift+F端口转发设置 port-forward
Tab切换选项在端口转发界面切换
Enter确认转发开始端口转发

使用步骤:

1
2
3
4
1. 在 Pod/Service 视图按 Shift+F
2. 输入本地端口和容器端口
3. 按 Enter 确认
4. 在新终端访问 localhost:port

Deployment 操作

扩缩容:

1
2
3
4
5
# 在 Deployment 视图
1. 选中 Deployment
2. 按 s 进入扩缩容模式
3. 输入副本数
4. 按 Enter 确认

进阶功能

多集群管理

切换集群:

1
2
:ctx                    # 查看所有集群上下文
:ctx cluster-name # 切换到指定集群

集群列表操作:

1
2
3
4
# 进入 :ctx 视图
# 使用上下键选择集群
# 按 Enter 切换到选中集群
# 当前活跃集群会高亮显示

集群监控面板

Pulse 监控:

1
2
3
4
:pulses        # 或 :pu
# 显示集群整体状态
# 包括:CPU、内存、Pod 状态、节点健康度
# 按数字键快速跳转到对应资源视图

监控面板功能:

  • 📊 实时资源使用率
  • 🔴 异常 Pod 快速定位
  • 📈 历史趋势图表
  • ⚡ 按数字键快速跳转

资源关联视图

XRay 视图:

1
2
3
:xray deployments              # 查看所有 Deployment 的关联关系
:xray deployments default # 查看指定命名空间
:xray pods # 查看 Pod 关联关系

关联关系可视化:

1
2
3
4
5
6
7
Deployment
├── ReplicaSet
│ ├── Pod (Running)
│ ├── Pod (Running)
│ └── Pod (Error)
└── Service
└── Endpoints

集群健康评分

Popeye 扫描:

1
2
3
4
:popeye        # 集群健康状态评分
# 会扫描所有资源并评分(0-100)
# 给出整体等级(A/B/C/D/F)
# 列出具体扣分原因

评分维度:

检查项说明扣分原因
资源限制CPU/Memory Limits未设置资源限制
健康检查Liveness/Readiness缺少探针配置
安全配置SecurityContext以 root 运行
端口命名Port Names端口未命名
标签规范Labels缺少推荐标签

查看详细建议:

1
2
3
# 在 Popeye 视图
# 选中某个资源类型
# 按 Enter 查看详细扣分原因和修复建议

RBAC 权限管理

查看权限:

1
2
3
4
:rb             # 查看 RoleBindings
:crb # 查看 ClusterRoleBindings
:role # 查看 Roles
:clusterrole # 查看 ClusterRoles

权限查看操作:

1
2
3
4
# 在 ClusterRoleBinding 视图
# 选中某个 Binding
# 按 Enter 查看详细权限
# 显示:API Groups, Resources, Verbs

最佳实践

安全模式

只读模式启动:

1
2
3
4
5
# 生产环境推荐
k9s --readonly

# 防止误操作
# 所有修改操作会被禁用

配置文件

K9s 配置文件位置:

1
2
~/.config/k9s/config.yml        # Linux/macOS
%APPDATA%\k9s\config.yml # Windows

自定义配置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
k9s:
# 刷新间隔(秒)
refreshRate: 2

# 日志缓冲区大小
maxConnRetry: 5

# 只读模式
readOnly: false

# 命名空间过滤
namespace:
active: default
favorites:
- default
- kube-system
- monitoring

# 自定义快捷键
hotkey:
# shift-0 跳转到 Pods
shift-0:
shortCut: Shift-0
description: View pods
command: pods

常用工作流

故障排查流程:

1
2
3
4
5
6
7
1. :pulses          # 查看集群整体状态
2. 按 4 # 跳转到 Pods 视图
3. Ctrl+Z # 只显示异常 Pod
4. 选中异常 Pod
5. 按 d # 查看详细描述
6. 按 l # 查看日志
7. 按 s # 进入容器排查

日常巡检流程:

1
2
3
4
5
6
1. :popeye         # 健康评分
2. :nodes # 检查节点状态
3. :pods # 检查 Pod 状态
4. Shift+C # 按 CPU 排序
5. Shift+M # 按内存排序
6. :events # 查看集群事件

快捷键速查表

全局快捷键

快捷键功能说明
?帮助显示当前界面快捷键
:资源跳转切换到指定资源视图
/过滤过滤过滤资源列表
Esc返回退出当前模式
Ctrl+C退出退出 K9s
Ctrl+A别名显示所有资源别名

资源操作

快捷键功能说明
d描述kubectl describe
yYAML查看 YAML 定义
e编辑编辑资源
v查看View 模式
l日志查看 Pod 日志
sShell进入容器 Shell
Ctrl+D删除删除资源(需确认)
Ctrl+K强删强制删除

视图控制

快捷键功能说明
Ctrl+R刷新刷新当前视图
Ctrl+WWide显示更多列
Ctrl+Z错误只显示异常资源
Space标记高亮标记资源
Shift+F转发端口转发

故障排查

常见问题

问题1:无法连接集群

1
2
3
4
5
6
7
8
# 检查 kubeconfig
kubectl config view

# 检查当前上下文
kubectl config current-context

# 指定配置文件启动
k9s --kubeconfig ~/.kube/config

问题2:权限不足

1
2
3
4
5
# 检查 RBAC 权限
kubectl auth can-i --list

# 使用只读模式
k9s --readonly

问题3:中文显示乱码

1
2
3
4
5
# 设置环境变量
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

# 或在配置文件中设置

总结

K9s 核心优势:

特性优势场景
终端 UI无需图形界面SSH 远程管理
实时监控资源状态实时刷新生产环境监控
快捷操作键盘快捷键高效日常运维管理
多集群快速切换集群多环境管理
健康评分自动发现问题集群巡检

学习建议:

  1. ✅ 从基本查看操作开始(:pods, :deploy
  2. ✅ 掌握核心快捷键(d, y, l, s
  3. ✅ 使用过滤功能快速定位(/, /-l
  4. ✅ 熟悉进阶功能(:pulses, :popeye
  5. ✅ 生产环境使用只读模式(--readonly

快速上手:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 1. 安装 K9s
brew install k9s # macOS

# 2. 启动(只读模式)
k9s --readonly

# 3. 查看 Pods
:pods

# 4. 按 ? 查看帮助
?

# 5. 开始探索!