跳到主要内容

K9s 完整指南:Kubernetes 终端 UI、快捷键大全、多集群切换与高级玩法

Rainy
雨落无声,代码成诗 —— 致力于技术与艺术的极致平衡
Rainy
23 MIN READ... VIEWS

Kubernetes 的对象很多,kubectl getkubectl describekubectl logskubectl execkubectl port-forward 足够强,但当你每天都要在 Pod、Deployment、Service、ConfigMap、Secret、Node、Namespace、CRD 之间来回跳转时,纯命令行会变成大量重复输入。

K9s 解决的正是这个问题:它把 Kubernetes API 变成一个可搜索、可过滤、可跳转、可执行操作的终端 UI。你仍然使用 kubeconfig、context、namespace 和 RBAC;K9s 只是把这些能力组织成更高效的交互界面。

截至 2026-06-26,K9s GitHub 最新 release 是 v0.51.0,发布时间是 2026-06-06。本文按当前官方文档、README 与 v0.51.x 系列行为整理。

K9s 终端资源总览


一、K9s 适合解决什么问题

K9s 不是 kubectl 的替代品,而是一个更适合高频浏览和排障的操作层。

场景直接用 kubectl用 K9s
临时脚本、CI、自动化更合适,可复制、可审计不适合自动化
查看大量资源需要反复输入 get/describe/logs直接搜索、过滤、排序、跳转
Pod 排障多条命令串联dlpsy 连续操作
多 namespace 巡检反复加 -n-A:nsall、过滤器
多集群切换kubectl config use-context:ctxk9s --context
生产只读观察依赖 RBAC 或习惯--readonly 加 context 配置双保险

我的建议是:

kubectl = 精确命令、脚本、GitOps、审计、可复现操作
K9s = 日常浏览、快速排障、交互式观察、临时操作

如果你正在学习 Kubernetes,K9s 还能帮你建立资源之间的连接感:Deployment 管 ReplicaSet,ReplicaSet 管 Pod,Service 指向 Endpoints,Pod 跑在 Node 上,ConfigMap/Secret 被谁引用。用图形化 Dashboard 也能做到,但 K9s 的优势是它仍然在终端里,和你的 shell、SSH、tmux、Neovim、日志工具天然贴合。


二、安装与启动

macOS 推荐使用 Homebrew:

brew install derailed/k9s/k9s
k9s version

Linux 可以按发行版选择:

# Arch Linux
sudo pacman -S k9s

# Fedora 42+
sudo dnf install k9s

# Ubuntu/Debian 可直接安装最新 deb 包
wget https://github.com/derailed/k9s/releases/latest/download/k9s_linux_amd64.deb
sudo apt install ./k9s_linux_amd64.deb
rm k9s_linux_amd64.deb

Windows 常用方式:

winget install k9s
# 或
scoop install k9s
# 或
choco install k9s

如果你不想在本机安装,也可以用容器方式运行,关键是把 kubeconfig 挂进去:

docker run --rm -it \
-v ~/.kube/config:/root/.kube/config \
derailed/k9s

启动前建议检查三件事:

# 1. 终端颜色能力,Linux/Unix 上尤其重要
export TERM=xterm-256color

# 2. 确认 kubectl 能访问集群
kubectl config current-context
kubectl get ns

# 3. 如果要在 K9s 里编辑资源,设置编辑器
export KUBE_EDITOR=nvim
# 或
export EDITOR=nvim

常用启动命令:

# 默认使用当前 kubeconfig context
k9s

# 查看 K9s 版本
k9s version

# 查看配置、日志、插件、hotkeys、skins 等路径
k9s info

# 打开指定 namespace
k9s -n kube-system

# 启动后直接进入 Pod 视图
k9s -c pod

# 打开指定 kubeconfig context
k9s --context prod-us-east

# 只读模式,禁用 delete/kill/edit 等修改动作
k9s --readonly

# 排查 K9s 自身问题时开启 debug 日志
k9s -l debug

三、先理解 K9s 的交互模型

K9s 的界面可以理解为四层:

层级作用
Context当前连接哪个 Kubernetes 集群和用户
Namespace当前关注哪个命名空间,也可以看 all
View当前资源视图,例如 Pods、Deployments、Services
Action对选中资源执行 describe、logs、edit、delete、shell、port-forward 等动作

使用时最重要的三个入口是:

入口用法
命令模式:,输入资源名、别名或命令
过滤模式/,输入正则、标签选择器或 fuzzy 条件
帮助面板?,查看当前视图可用快捷键

一个典型排障流程像这样:

:po 进入 Pod 视图
/checkout 过滤名字包含 checkout 的 Pod
d describe 当前 Pod
l 查看当前 Pod 日志
p 查看 previous logs
s shell 进入容器
y 查看 YAML
esc 返回上一层

K9s 的核心不是记住所有键,而是形成一个反射:先进入资源视图,再过滤,再对选中资源执行动作


四、命令模式:用 : 跳到任何资源

: 后输入命令,回车执行。K9s 支持 Kubernetes 资源的单数、复数、short name,也支持 K9s 自己的别名。

常用资源入口:

命令说明
:po / :pod / :podsPod
:deploy / :dpDeployment
:stsStatefulSet
:dsDaemonSet
:rsReplicaSet
:svcService
:epEndpoints
:ingIngress
:cmConfigMap
:secretSecret
:saServiceAccount
:role / :rolebindingNamespace 级 RBAC
:clusterrole / :clusterrolebinding集群级 RBAC
:no / :nodeNode
:nsNamespace
:pvc / :pvPersistentVolumeClaim / PersistentVolume
:job / :cjJob / CronJob
:crdCustomResourceDefinition
:ctxContext 列表与切换

命令模式还支持直接带条件:

:pod kube-system
:pod /coredns
:pod app=checkout,env=prod
:pod @prod-us-east
:xray deploy
:pulses
:screendump

这些写法分别表示:

写法作用
:pod kube-system查看指定 namespace 的 Pod
:pod /coredns进入 Pod 视图并按名称过滤
:pod app=checkout,env=prod按 label selector 查看 Pod
:pod @prod-us-east查看某个 context 的 Pod,并切换当前 context
:xray deploy打开 Deployment 资源关系视图
:pulses / :pu打开集群脉冲视图
:screendump / :sd查看保存的资源快照
提示

不确定资源名时,按 ctrl-a 可以查看可用资源 alias;在命令模式里也可以使用自动建议,按方向键选择,按 Tabctrl-f 或右方向键接受建议。


五、过滤、排序与资源浏览

进入某个资源视图后,最常用的是过滤和排序。

动作快捷键 / 写法说明
普通过滤/checkout用正则过滤当前表格
反向过滤/!checkout保留不匹配的资源
标签过滤/-l app=checkout使用 label selector
Fuzzy 查找/-f checkout模糊查找
退出过滤/命令模式Esc返回表格视图
刷新视图ctrl-r重新加载当前视图
切换 wide columnsctrl-w展示更宽的列
切换 headerctrl-e显示/隐藏头部
切换 breadcrumbsctrl-g显示/隐藏导航面包屑
切换错误展示ctrl-z展示/隐藏故障类资源

排序相关:

排序快捷键
按当前列排序shift-o
按名称排序shift-n
按 Age 排序shift-a
按 Namespace 排序shift-p
按 Status 排序shift-s
选中列左移shift-left arrow
选中列右移shift-right arrow

资源复制和标记:

动作快捷键
复制资源名c
复制 namespacen
标记资源space
标记一段资源ctrl-space
清空标记Ctrl+Backslash
保存资源到文件ctrl-s

标记资源适合批量操作前先确认目标,例如批量删除前先标记资源。但生产环境里更建议少做批量交互式修改,能走 GitOps 就走 GitOps。


六、资源动作快捷键大全

不同资源视图的快捷键会不一样,所以永远以 ? 中显示的当前视图菜单为准。下面是日常最常用的一组。

6.1 全局导航

动作快捷键
帮助?
资源 alias 列表ctrl-a
进入命令模式:
进入过滤模式/
退出命令/过滤/当前层Esc
退出 K9s:q / :quit / ctrl-c
回到上一个有效命令-
命令历史后退[
命令历史前进]

6.2 通用资源动作

动作快捷键备注
Described类似 kubectl describe
查看 YAMLy查看完整资源清单
编辑资源e只读模式不可用
删除资源ctrl-d需要确认
立即 kill/delete nowctrl-k高风险,慎用
跳到 ownershift-j资源存在 owner 时可用
Warp 到 namespacew当前表格有 namespace 列时可用
UsedByuServiceAccount、PVC、Secret、ConfigMap 等视图里常见

6.3 Pod / Container

动作快捷键备注
查看日志l当前 Pod 或容器
查看 previous logsp排查 CrashLoopBackOff 很有用
Shell 进入容器s类似 kubectl exec -it
Attach 容器a连接到容器进程
查看 port-forwardsfPod/Service/Container 相关视图
创建 port-forwardshift-fPod/Service/Container 相关视图

日志视图内部:

动作快捷键
切换换行w
切换时间戳t
全屏日志f
过滤日志/
退出日志Esc

6.4 Workload

资源动作快捷键
Deployment / DaemonSet / StatefulSetRestartr
Deployment查看 ReplicaSetsz
ReplicaSetRollbackctrl-l
CronJobTriggert

这里要注意,r 是上下文相关的:在 Deployment 里通常是 restart,在 Node 里可能是 drain。不要脱离当前视图记快捷键。

6.5 Node

动作快捷键备注
Cordon / Uncordonu控制是否可调度
Drainr驱逐节点上的 Pod,高风险
Node Shells需要启用 nodeShell feature gate

Node 视图里的操作会影响集群调度,生产环境里建议配合 --readonly、RBAC 和变更流程使用。


七、日志、Shell 与端口转发

7.1 日志

排查 Pod 最常用的是:

:po
/服务名或 Pod 名
l

如果 Pod 正在 CrashLoopBackOff,先看 previous logs:

p

可以在配置里调整日志默认行为:

# config.yaml
k9s:
logger:
tail: 200
buffer: 5000
sinceSeconds: 300
textWrap: false
showTime: false

sinceSeconds: 300 表示默认看最近 5 分钟;-1 通常表示持续 tail。日志量很大的服务不要把 buffer 设置得过大,否则终端 UI 会变慢。

7.2 Shell 进入容器

在 Pod 或 Container 视图选中目标后按:

s

这等价于一次交互式 exec。它适合临时查看文件、执行探针命令、确认环境变量,但不要把它变成“手工修改容器”的入口。容器应该是不可变的,修复应该回到镜像、配置或部署清单。

7.3 端口转发

Pod、Service、Container 相关视图里:

动作快捷键
查看已有 port-forwardf
创建 port-forwardshift-f

可以用环境变量覆盖默认监听地址:

export K9S_DEFAULT_PF_ADDRESS=127.0.0.1

如果某些服务经常要转发端口,可以在清单里使用 K9s 支持的注解,减少每次手动选择容器和端口:

metadata:
annotations:
k9scli.io/auto-port-forwards: api::8080
k9scli.io/port-forwards: web::9090:http

含义是:

注解作用
k9scli.io/auto-port-forwards打开端口转发时自动选择目标
k9scli.io/port-forwards打开对话框时预选目标

格式是:

container-name::[local-port:]container-port

生产环境不要随意把监听地址改成 0.0.0.0,除非你明确知道本机网络暴露范围。


八、多集群与多 namespace 切换

K9s 使用的仍然是 kubeconfig context。先用 kubectl 确认当前有哪些 context:

kubectl config get-contexts
kubectl config current-context

启动时选择 context:

k9s --context dev
k9s --context staging
k9s --context prod-us-east --readonly

在 K9s 内切换 context:

:ctx

进入 Context 视图后选择目标 context。也可以直接:

:ctx prod-us-east

查看某个 context 的资源时,可以这样:

:pod @prod-us-east

官方文档明确说明,这种写法会切换当前 K9s context,所以不要把它当成“临时远程查询”。如果只是想开两个集群窗口,更推荐直接开两个终端:

k9s --context dev
k9s --context prod-us-east --readonly

K9s 多集群切换工作流

Namespace 切换:

:ns

进入 Namespace 视图后,选中 namespace,按当前视图菜单提示切换。也可以在资源命令里直接带 namespace:

:pod kube-system
:svc ingress-nginx
:deploy checkout

8.1 多 kubeconfig 文件

如果你把 dev、stage、prod 分成多个 kubeconfig,可以用 Kubernetes 标准的 KUBECONFIG 合并:

export KUBECONFIG="$HOME/.kube/dev:$HOME/.kube/staging:$HOME/.kube/prod"
kubectl config get-contexts
k9s

也可以显式为不同窗口指定 kubeconfig:

KUBECONFIG=$HOME/.kube/dev k9s --context dev
KUBECONFIG=$HOME/.kube/prod k9s --context prod --readonly

我更推荐生产环境使用显式启动脚本或 alias:

alias k9sd='KUBECONFIG=$HOME/.kube/dev k9s --context dev'
alias k9ss='KUBECONFIG=$HOME/.kube/staging k9s --context staging'
alias k9sp='KUBECONFIG=$HOME/.kube/prod k9s --context prod --readonly'

8.2 生产安全切换策略

多集群最大的风险不是“切不过去”,而是“切到了生产却以为自己还在测试”。建议做四层防护:

层级做法
kubeconfigprod 单独文件,不和个人实验集群混在一起
RBAC日常账号默认只读,变更使用单独流程
K9s 启动prod alias 强制 --readonly
视觉提醒prod 使用独立 skin,例如红/琥珀色标题与边框

K9s 支持 context 级配置。实际路径以 k9s info 输出为准,通常在 $XDG_DATA_HOME/k9s/clusters/<cluster>/<context>/config.yaml 一类目录下:

k9s:
cluster: prod-us-east
readOnly: true
skin: prod
namespace:
active: default
lockFavorites: false
favorites:
- all
- kube-system
- ingress-nginx
- payments
view:
active: po

这样即使你忘记加 --readonly,context 配置也会继续把该集群保持为只读。


九、配置文件:用 k9s info 找准路径

K9s 使用 XDG 目录规范,但不同操作系统和版本的默认路径不完全相同。官方文档给出的常见位置是:

系统配置目录
Unix/Linux~/.config/k9s
macOS~/Library/Application Support/k9s
Windows%LOCALAPPDATA%\k9s

最可靠的方式是:

k9s info

它会告诉你:

Config:
Logs:
Dumps dir:
Benchmarks dir:
Skins dir:
Contexts dir:
Custom views file:
Plugins file:
Hotkeys file:
Alias file:

如果你想把 K9s 配置放到固定目录,可以设置:

export K9S_CONFIG_DIR=$HOME/.config/k9s

一个适合日常使用的基础配置:

k9s:
refreshRate: 2
apiServerTimeout: 15s
maxConnRetry: 5
readOnly: false
defaultView: po
noExitOnCtrlC: false
portForwardAddress: localhost
ui:
enableMouse: false
headless: false
logoless: false
crumbsless: false
splashless: false
noIcons: false
reactive: false
skin: dracula
defaultsToFullScreen: false
logger:
tail: 200
buffer: 5000
sinceSeconds: 300
textWrap: false
showTime: false
thresholds:
cpu:
warn: 70
critical: 90
memory:
warn: 70
critical: 90

几个关键项:

配置作用
refreshRateUI 轮询刷新间隔,太小会增加 API 压力
apiServerTimeoutAPI server 请求超时时间
readOnly禁用修改类命令
defaultView默认进入哪个资源视图
portForwardAddressport-forward 默认监听地址
logger.tail打开日志时默认读取多少行
thresholdsCPU/内存告警阈值

远程终端复制资源名时,可以关注当前 README 中提到的剪贴板环境变量:

export K9S_CLIPBOARD=auto
# 可选:native 或 osc52

当你在 SSH、tmux、iTerm2、VS Code 远程终端之间切换时,OSC52 剪贴板可能比系统剪贴板工具更稳定。


十、Hotkeys:给高频视图绑定快捷键

命令模式很好用,但每天输入 :deploy:po app=xxx:xray deploy 仍然麻烦。K9s 支持自定义 hotkeys,并且会在帮助视图 ? 中展示。

路径以 k9s infoHotkeys file 为准。常见配置文件名是 hotkeys.yaml

hotKeys:
shift-0:
shortCut: Shift-0
description: View Pods
command: pods

shift-1:
shortCut: Shift-1
description: View Deployments
command: deploy

shift-2:
shortCut: Shift-2
description: XRay Deployments
command: xray deploy

shift-3:
shortCut: Shift-3
description: Failed Pods
command: pod /!Running

更高级一点,可以使用当前资源变量:

hotKeys:
shift-s:
shortCut: Shift-S
override: true
description: Same resource in selected namespace
command: "$RESOURCE_NAME $NAMESPACE"
keepHistory: true

适合绑定的视图:

快捷键建议命令用途
Shift-0pods快速回到 Pod
Shift-1deploy快速看 Deployment
Shift-2xray deploy看资源关系
Shift-3svc看服务入口
Shift-4ing看入口流量
Shift-5events看事件

如果某个快捷键和 K9s 内置快捷键冲突,不要硬覆盖,除非你明确知道这个动作在当前团队里更重要。


十一、Aliases:给长资源名和 CRD 起短名

Kubernetes 里很多 CRD 名字很长,例如 Argo Rollouts、Istio、Gateway API、External Secrets、Cert Manager。K9s aliases 可以把长资源映射成短命令。

路径同样以 k9s infoAlias file 为准。示例:

aliases:
pp: v1/pods
dep: apps/v1/deployments
crb: rbac.authorization.k8s.io/v1/clusterrolebindings
vs: networking.istio.io/v1beta1/virtualservices
gw: gateway.networking.k8s.io/v1/gateways
eso: external-secrets.io/v1beta1/externalsecrets
cert: cert-manager.io/v1/certificates

也可以把 alias 指向一条命令:

aliases:
paypods: pod payments app=checkout
syspods: pod kube-system

然后在 K9s 里直接输入:

:paypods
:vs
:cert

对于平台团队,建议把常用 CRD aliases 纳入 dotfiles 或内部开发环境模板,让所有人使用同一套短名。


十二、Plugins:把团队命令接进 K9s

K9s plugins 可以把外部命令挂到某些资源视图上。官方文档说明 K9s 会查找:

位置用途
$XDG_CONFIG_HOME/k9s/plugins.yaml主插件文件
$XDG_CONFIG_HOME/k9s/plugins配置目录下插件片段
$XDG_DATA_HOME/k9s/plugins数据目录下插件片段
$XDG_DATA_DIRS/k9s/plugins系统级插件片段
context 目录下 plugins.yamlcontext 级插件

插件可以使用 K9s 注入的环境变量,例如:

变量含义
$NAME / $RESOURCE_NAME当前选中资源名
$NAMESPACE当前资源 namespace
$CONTAINER当前容器
$KUBECONFIG当前 kubeconfig
$CLUSTER当前集群名
$CONTEXT当前 context
$USER当前用户
$FILTER当前过滤条件

示例:给 Pod 视图增加一个 Ctrl-L,用 kubectl logs -f 追日志:

plugins:
tail-selected-pod:
shortCut: Ctrl-L
description: Tail pod logs
scopes:
- po
command: kubectl
background: false
args:
- logs
- -f
- $NAME
- -n
- $NAMESPACE
- --context
- $CONTEXT

示例:调用 stern 聚合日志:

plugins:
stern-namespace:
shortCut: Shift-L
description: Stern logs in namespace
scopes:
- po
command: stern
background: false
args:
- $NAME
- -n
- $NAMESPACE
- --context
- $CONTEXT

插件适合接入这些团队工具:

工具用法
stern / kubetail多 Pod 日志聚合
kubectl-neat清理 YAML 中的运行时字段
kubectl tree查看 owner 关系
kubectl trace / debug 工具临时排查
内部 CLI查看发布单、告警、服务 owner

插件的风险也很明确:它可以执行任意本地命令。团队共享插件前要做代码审查,尤其是带删除、扩缩容、变更配置、访问 Secret 的命令。

K9s 高级运维玩法


十三、Skins:给环境建立视觉边界

K9s skins 是 YAML 主题。它不只是美化,真正价值是让环境一眼可辨认

建议:

环境Skin 思路
dev冷色、低警戒
staging蓝/紫色
prod琥珀/红色状态、明显边框

全局设置可以写在配置里:

k9s:
ui:
skin: dracula

也可以通过环境变量覆盖:

export K9S_SKIN=dracula
k9s

context 级 skin 更适合多集群:

k9s:
cluster: prod-us-east
readOnly: true
skin: prod

生产环境最好同时满足:

prod context = 只读 + 独立 kubeconfig + 独立 skin + 明确 alias

不要只靠颜色防误操作,颜色只能降低认知错误,不能替代权限控制。


十四、Custom Views:定制表格列

K9s 支持通过 views.yaml 自定义资源表格列。它适合把团队关心的 label、annotation、资源限制、owner 字段提到表格里。

示例:给 Pod 视图定制列:

views:
v1/pods:
columns:
- AGE
- NAMESPACE|WR
- NAME
- READY
- STATUS
- RESTARTS
- IP
- NODE
- APP:.metadata.labels.app
- TEAM:.metadata.labels.team
- VERSION:.metadata.labels.version
- '%CPU/L'
- '%MEM/L'

列配置要注意:

规则说明
使用 GVR例如 v1/podsapps/v1/deployments
JSON path 类表达式从 manifest 中抽取字段
特殊列名加引号'%MEM/L'
属性追加例如 R 右对齐,W wide 列,S 强制显示
出错看 K9s 日志配置错误通常在 k9s.log 中更清楚

适合加到列里的字段:

字段价值
app / component快速按服务识别
team / owner排障时找负责方
version / commit判断发布版本
rollouts-pod-template-hash对比发布批次
自定义 SLO 标签识别高优先级服务

十五、高级玩法

15.1 XRay:看资源关系

:xray deploy
:xray svc
:xray po

XRay 适合理解对象关系,例如:

Deployment -> ReplicaSet -> Pod
Service -> Endpoints -> Pod
StatefulSet -> Pod -> PVC

当你接手一个陌生 namespace,先用 :xray deploy 看一圈,通常比逐个 kubectl describe 更快。

15.2 Pulses:看集群脉冲

:pulses
# 或
:pu

Pulses 用于看整体资源状态、事件和健康信号。它不是 Prometheus/Grafana 的替代品,但适合在终端里快速回答:

现在集群里哪里红了?
哪个 namespace 有异常?
资源是否正在大面积变化?

15.3 Node Shell

K9s 支持在 Node 视图中进入节点 shell,但需要启用 feature gate。它会在目标节点上启动一个 shell pod。

全局 shell pod 配置示例:

k9s:
shellPod:
image: busybox:1.35.0
namespace: default
limits:
cpu: 100m
memory: 100Mi
tty: true

context 级启用:

k9s:
cluster: prod-us-east
featureGates:
nodeShell: true

也可以用环境变量覆盖:

export K9S_FEATURE_GATE_NODE_SHELL=true

Node shell 权限很敏感。建议只在受控排障场景打开,使用专门的 admin 镜像,并明确限制哪些人可以使用。

15.4 Popeye 集群体检

K9s 集成了 Popeye 入口:

:popeye
# 或
:pop

Popeye 用于扫描 Kubernetes 配置中的常见问题,例如资源限制、探针、镜像、服务引用、RBAC 等。它更像“集群卫生检查”,适合在发布前或巡检时使用。

15.5 Benchmark

在 Service 或 port-forward 相关视图里,b 可以运行或停止 benchmark。它适合做非常轻量的连通性和吞吐观察,但不要把它当作正式压测工具。正式压测仍然应该使用 k6、wrk、hey、Locust 等工具,并配合隔离环境与容量保护。

15.6 只读模式

只读模式是生产环境必备:

k9s --readonly

配置里也可以开启:

k9s:
readOnly: true

只读模式会禁用修改命令,例如 delete、kill、edit。注意它不是 Kubernetes RBAC 的替代品。真正的权限边界仍然要靠 kube-apiserver 的认证授权。


十六、生产排障工作流

16.1 Pod CrashLoopBackOff

:po
/服务名
d
p
l
y

检查顺序:

  1. d 看 Events:镜像拉取失败、探针失败、调度失败、OOMKilled。
  2. p 看 previous logs:容器刚崩溃时,当前日志可能为空。
  3. l 看实时日志:确认是否启动后马上退出。
  4. y 看环境变量、资源限制、volume、probe。
  5. 回到 Deployment 看 rollout 和 ReplicaSet。

16.2 Service 不通

:svc
/服务名
d
:ep
/服务名
shift-f

检查顺序:

检查目标
Service selector是否能选中 Pod
Endpoints是否有后端地址
Pod readinessService 只接 ready Pod
port/targetPort是否和容器端口一致
NetworkPolicy是否拦截流量
port-forward区分服务内部问题和入口问题

16.3 发布后异常

:deploy
/服务名
d
z
:rs
:po
/服务名

检查:

对象看什么
Deploymentdesired/current/available 是否一致
ReplicaSet新旧版本副本分布
Pod是否集中失败在新版本
Events镜像、调度、探针、权限
Logs应用启动和依赖错误

需要重启时,在 Deployment 视图按 r。需要回滚时,通常应该优先走发布系统或 GitOps;如果必须在 K9s 操作,先确认当前视图和目标资源,再按帮助菜单执行。

16.4 Node 压力

:node
shift-o
d

看:

信号说明
CPU / Memory是否整体资源紧张
DiskPressure镜像、日志、emptyDir 是否占满
PIDPressure进程数是否异常
NotReadykubelet、网络、运行时是否故障
Pod 分布是否单点过载

u cordon/uncordon 和 r drain 都属于高风险操作,建议只在变更窗口和明确 runbook 下执行。


十七、我的推荐配置组合

如果你刚开始用 K9s,可以按这个顺序逐步配置:

第一阶段:默认配置 + 熟悉 :po / :deploy / :svc / :ns / :ctx
第二阶段:配置 logger、skin、defaultView
第三阶段:给 dev/stage/prod 建不同 alias 和 skin
第四阶段:加 hotkeys 和 aliases
第五阶段:接入团队 plugins 和 custom views

一个比较稳的 shell 配置:

export KUBE_EDITOR=nvim
export K9S_CLIPBOARD=auto

alias k9sd='KUBECONFIG=$HOME/.kube/dev k9s --context dev'
alias k9ss='KUBECONFIG=$HOME/.kube/staging k9s --context staging'
alias k9sp='KUBECONFIG=$HOME/.kube/prod k9s --context prod --readonly'

一个比较稳的 K9s 习惯:

习惯原因
先看右上角 context/namespace避免误集群、误 namespace
生产只读启动防止交互式误操作
任何高风险键先按 ?不同视图快捷键不同
删除、drain、kill 前停 3 秒确认资源名和环境
修改类动作回到 GitOps保持审计和可复现
插件统一维护避免每个人本地命令不一致

十八、快捷键速查表

最后把高频快捷键压成一张速查表。

类别快捷键 / 命令作用
帮助?当前视图帮助
资源别名ctrl-a查看 resource alias
命令模式:跳转资源/执行命令
过滤/过滤当前列表
退出Esc返回/退出当前模式
退出 K9s:q / ctrl-c关闭 K9s
Context:ctx切换集群 context
Namespace:ns切换 namespace
Pod:poPod 视图
Deployment:deploy / :dpDeployment 视图
Service:svcService 视图
Node:node / :noNode 视图
XRay:xray deploy资源关系视图
Pulses:pulses / :pu集群脉冲视图
Described描述资源
YAMLy查看 YAML
Edite编辑资源
Logsl当前日志
Previous logsp上一次容器日志
Shells进入容器或节点 shell
Attachaattach 容器
Port-forward 列表f查看转发
创建 port-forwardshift-f新建转发
删除ctrl-d删除资源,带确认
Killctrl-k立即删除,高风险
RestartrWorkload 重启;Node 视图为 drain
Rollbackctrl-lReplicaSet 回滚
TriggertCronJob 触发
Cordon/UncordonuNode 视图
Jump ownershift-j跳到 owner
Refreshctrl-r刷新
Wide columnsctrl-w切换宽列
Headerctrl-e切换头部
Breadcrumbsctrl-g切换面包屑
Faultsctrl-z切换故障显示
复制名称c复制资源名
复制 namespacen复制 namespace
标记space标记资源
标记范围ctrl-space批量标记
清空标记Ctrl+Backslash清空标记
保存资源ctrl-s保存到文件
日志换行w日志视图
日志时间戳t日志视图
全屏f日志/YAML/详情视图

参考资料

Logo
RainLib

探索技术、设计与分布式系统的边界。构建面向未来的开发者工具。

留言与建议

© 2026 RainLib. 为未来构建。(Built for the Future)
版权所有。
系统正常