还怕记不住 Kubectl 命令?K9s 太强大了
The following article is from 东风微鸣技术博客 Author 东风微鸣
开篇
像我这种,kubectl
用的不是非常溜,经常会碰到以下情况:
•忘记命令,先敲 --help
,再敲命令,效率低•忘记加 -n
指定 namespace•太长的命令经常记错或敲错,比如 kubectl exec -it...
•无法快速将日志、yaml 复制出来•对于 CRD 类资源,记不住 CRD type,查不到相关信息•无法掌握集群的健康及监控状态•…
如果你的工作机(前置机、跳板机、操作机、堡垒机…)只是 Linux Shell,而没有桌面环境。那么我强烈推荐你使用这个 K8S 实用工具:终端 UI K9S。
🐾 K9S 简介
K9S:K9s 是一个基于终端的 UI,用于与 Kubernetes 集群进行交互。这个项目的目的是使导航、观察和管理已部署的应用程序变得更容易。K9s 持续监视 Kubernetes 的变化,并提供后续命令与观察到的资源进行交互。
🖌️ K9S 功能
•信息触手可及!•跟踪 Kubernetes 集群中运行的资源的实时活动。•标准资源或 CRD?•处理 Kubernetes 标准资源和自定义资源定义(即:CRD)。•集群指标•跟踪与 pod、容器和节点(node)等资源相关的实时指标。•受到高级用户欢迎!•提供标准的集群管理命令,如日志、伸缩、端口转发、重启等•定义您自己的命令快捷键,通过命令别名和热键快速导航。•k9s 支持插件扩展,以创建您自己的集群命令。•强大的过滤模式,允许用户深入和查看与工作负载相关的资源。•错误钻取•直接钻取群集资源的错误。•皮肤和可定制性•通过 K9s 皮肤定义您自己的外观和感觉。•自定义/排列要在每个资源基础上显示的列。•窄或宽?•提供查看最小或完整资源定义的切换•多资源视图•通过 Pulses 和 XRay 视图提供集群资源的概述。•我们拿到你的 RBAC 了!•支持查看 RBAC 规则,如集群/角色及其关联绑定。•反向查找断言用户/组或 ServiceAccount 在集群上可以做什么。•内置基准测试(Benchmarking)•您可以直接从K9s对HTTP服务/pod进行基准测试,以查看应用程序的运行情况,并相应地调整资源请求/限制。•资源图遍历•K9s 提供了 Kubernetes 资源及其关联资源的简单遍历。
🛠️ 安装
直接从 release[2] 页面下载对应版本解压到 /usr/local/bin
即可。
⌨️ 命令
安装后直接运行 k9s
,就会进入 UI 界面,如下图:
👽️ 快捷键
操作 | 命令 | 备注 |
显示活跃的键盘助记符和帮助 | ? | |
显示集群上所有可用的别名和资源 | ctrl-a or :alias | |
退出 K9s | :q , ctrl-c | |
使用单数/复数或短名称查看Kubernetes 资源 | : po⏎ | 接受单数,复数,短名或别名如 pod 或 pods |
查看给定名称空间中的Kubernetes 资源 | : alias namespace⏎ | |
过滤出给定过滤器的资源视图 | / filter⏎ | 支持 Regex2,如` fred |
反向正则表达式过滤器 | / ! filter⏎ | 保留所有 不匹配 的东西。日志未实现。 |
按标签过滤资源视图 | / -l label-selector⏎ | |
模糊查找给定的资源 | / -f filter⏎ | |
退出视图/命令/过滤模式 | <esc> | |
键映射来描述(describe),查看(view),编辑(edit),查看日志(logs),... | d ,v , e , l ,… | |
查看并切换到另一个Kubernetes上下文 | : ctx⏎ | |
查看并切换到另一个Kubernetes上下文 | : ctx context-name⏎ | |
查看并切换到另一个 Kubernetes 名称空间 | : ns⏎ | |
查看所有已保存的资源 | : screendump or sd⏎ | |
要删除资源(按TAB 键并输入Enter ) | ctrl-d | |
杀死一个资源(没有确认对话框!) | ctrl-k | |
切换宽列 | ctrl-w | 等同于 kubectl ... -o wide |
切换错误状态 | ctrl-z | 查看有错误的资源 |
运行 pulses(脉冲)视图 | : pulses or pu⏎ | |
运行 XRay(X 光)视图 | : xray RESOURCE [NAMESPACE]⏎ | 资源可以是以下之一:po, svc, dp, rs, sts, ds, NAMESPACE 参数可选 |
运行 Popeye(评估跑分) 视图 | : popeye or pop⏎ | 参阅 https://popeyecli.io |
深度使用
快捷键
花个 10 - 30 分钟熟悉快捷键,然后 —— 超级爽,各种快速进入、查找、切换、看 yaml、看日志、滚动日志、进 shell、编辑、复制 …
强烈推荐花时间熟悉,你会感觉效率飞升。🤓🤓🤓
过滤
它的过滤功能非常强大,使得你可以非常快速的定位资源,比如我想要看 traefik 的所有 CRD,操作如下:
ctrl-a
/traefik
更多过滤功能,可以自己试一试,进一步研究。
Pulses - 监控 Dashboard
:pulse
就进入这个模式,这个就是一个监控 Dashboard,如下图:
可以非常直观看到集群现在的健康情况 —— 明显现在我的 Events 有异常,直接按 5⏎
, 再按 ctrl-z
查看异常事件:
XRay
XRay 会提供以某个 Kubernetes 资源为维度的关联关系,像 X 光一样,透射到资源的内部。如下图:
以 traefik deployment 为例,位于 kube-system ns,启动了一个 traefik-97b44b794-7qvzk
pod,pod 只有一个 traefik
container,并通过 ServiceAccount traefik
挂载了 secret traefik-token-r7vd2
。
Popeye
Popeye(大力水手)就是为集群、以及集群内的每隔资源打分,分数从 0 - 100,最后根据得分评出你的集群的情况:得分是 A 还是 C,并给出具体原因。
如下:
DaemonSet 得 0 分原因是都没指定 requests 和 limits:
Service 得 20 分原因就多了,甚至还贴心考虑到了开销贵不贵的问题:
🔐 直观的 RBAC
RBAC 的 yaml 看起来很不方便的,如果对权限比较要求比较多,那 K9S 绝对好用直观,如下,traefik role 有哪些权限一目了然:who、what、how。
✍ 总结
K9S 是一个基于终端的 K8S UI,在没有桌面、只有 终端的情况下使用它,可以大幅提升你的效率以及你对 K8S 的认知。
它有很多强大的功能,其中:快捷键、过滤、Pulses、XRay、Popeye、RBAC 这些功能一定要试一试,体验飞升!
一起使用吧~ 🤓🤓🤓
References
[1]
K8S 实用工具之一 - 如何合并多个 kubeconfig?: https://ewhisper.cn/posts/46789/[2]
release: https://github.com/derailed/k9s/releases
推荐阅读
开源容器 Podman 常用命令总结!使用 Lux 批量下载B站视频
38 万 k8s API 服务暴露在公网上可能被攻击?
大规模 K8s 集群性能瓶颈和调优实践
如何将多个 kubeconfig 文件合并为一个?
毫无争议的 GitHub 顶级开源项目排行榜Kruise 轻松让 K8S 应用实现渐进式交付图解 Kubernetes Pod 如何获取 IP 地址使用 Telepresence 轻松在本地调试 k8s 应用程序GitOps 工具选型,33 款工具任你挑!就在刚刚 k8s 1.24 正式发布,来看功能总览Nomad 会替代 Kubernetes 吗?两者如何选择?Docker 入门终极指南,详细版!漫画轻松看懂如何用 Kubernetes 实现 CI/CD阿里开源的低代码引擎,已收获 4.5K 星星新手必须知道的 Kubernetes 架构Kubernetes 架构核心点详细总结!