4

K8S 实用工具之二 - 终端 UI K9S - 东风微鸣

 1 year ago
source link: https://www.cnblogs.com/east4ming/p/17178470.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

📜 引言

  • 磨刀不误砍柴工
  • 工欲善其事必先利其器

像我这种,kubectl 用的不是非常溜,经常会碰到以下情况:

  • 忘记命令,先敲 --help,再敲命令,效率低
  • 忘记加 -n 指定 namespace
  • 太长的命令经常记错或敲错,比如 kubectl exec -it...
  • 无法快速将日志、yaml 复制出来
  • 对于 CRD 类资源,记不住 CRD type,查不到相关信息
  • 无法掌握集群的健康及监控状态

如果你的工作机(前置机、跳板机、操作机、堡垒机…)只是 Linux Shell,而没有桌面环境。那么我强烈推荐你使用这个 K8S 实用工具:终端 UI K9S

🐾 K9S 简介

K9S:K9s 是一个基于终端的 UI,用于与 Kubernetes 集群进行交互。这个项目的目的是使导航、观察和管理已部署的应用程序变得更容易。K9s 持续监视 Kubernetes 的变化,并提供后续命令与观察到的资源进行交互。

k9s

🖌️ K9S 功能

  • 信息触手可及!
    • 跟踪 Kubernetes 集群中运行的资源的实时活动。
  • 标准资源或 CRD?
    • 处理 Kubernetes 标准资源和自定义资源定义(即:CRD)。
  • 集群指标
    • 跟踪与 pod、容器和节点(node)等资源相关的实时指标。
  • 受到高级用户欢迎!
    • 提供标准的集群管理命令,如日志、伸缩、端口转发、重启等
    • 定义您自己的命令快捷键,通过命令别名和热键快速导航。
    • k9s 支持插件扩展,以创建您自己的集群命令。
    • 强大的过滤模式,允许用户深入和查看与工作负载相关的资源。
  • 错误钻取
    • 直接钻取群集资源的错误。
  • 皮肤和可定制性
    • 通过 K9s 皮肤定义您自己的外观和感觉。
    • 自定义/排列要在每个资源基础上显示的列。
  • 窄或宽?
    • 提供查看最小或完整资源定义的切换
  • 多资源视图
    • 通过 PulsesXRay 视图提供集群资源的概述。
  • 我们拿到你的 RBAC 了!
    • 支持查看 RBAC 规则,如集群/角色及其关联绑定。
    • 反向查找断言用户/组或 ServiceAccount 在集群上可以做什么。
  • 内置基准测试(Benchmarking)
    • 您可以直接从K9s对HTTP服务/pod进行基准测试,以查看应用程序的运行情况,并相应地调整资源请求/限制。
  • 资源图遍历
    • K9s 提供了 Kubernetes 资源及其关联资源的简单遍历。

🛠️ 安装

直接从 release 页面下载对应版本解压到 /usr/local/bin 即可。

安装后直接运行 k9s,就会进入 UI 界面,如下图:

k9s 首页

👽️ 快捷键

操作 命令 备注
显示活跃的键盘助记符和帮助 ?
显示集群上所有可用的别名和资源 ctrl-a or :alias
退出 K9s :q, ctrl-c
使用单数/复数或短名称查看Kubernetes 资源 :po⏎ 接受单数,复数,短名或别名如 podpods
查看给定名称空间中的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
traefik crd

更多过滤功能,可以自己试一试,进一步研究。

Pulses - 监控 Dashboard

:pulse 就进入这个模式,这个就是一个监控 Dashboard,如下图:

Pulses

可以非常直观看到集群现在的健康情况 —— 明显现在我的 Events 有异常,直接按 5⏎, 再按 ctrl-z查看异常事件:

Events

XRay 会提供以某个 Kubernetes 资源为维度的关联关系,像 X 光一样,透射到资源的内部。如下图:

XRay

以 traefik deployment 为例,位于 kube-system ns,启动了一个 traefik-97b44b794-7qvzk pod,pod 只有一个 traefik container,并通过 ServiceAccount traefik 挂载了 secret traefik-token-r7vd2

Popeye

Popeye(大力水手)就是为集群、以及集群内的每隔资源打分,分数从 0 - 100,最后根据得分评出你的集群的情况:得分是 A 还是 C,并给出具体原因。

popeye

DaemonSet 得 0 分原因是都没指定 requests 和 limits:

DaemonSet 0 分原因

Service 得 20 分原因就多了,甚至还贴心考虑到了开销贵不贵的问题:

Service 20分 原因

🔐 直观的 RBAC

RBAC 的 yaml 看起来很不方便的,如果对权限比较要求比较多,那 K9S 绝对好用直观,如下,traefik role 有哪些权限一目了然:who、what、how。

RBAC 视图

K9S 是一个基于终端的 K8S UI,在没有桌面、只有 终端的情况下使用它,可以大幅提升你的效率以及你对 K8S 的认知。

它有很多强大的功能,其中:快捷键、过滤、Pulses、XRay、Popeye、RBAC 这些功能一定要试一试,体验飞升!

一起使用吧~ 🤓🤓🤓

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK