K8S 实用工具之二 - 终端 UI K9S

尹楷
• 阅读 1594

开篇

📜 引言

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

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

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

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

🐾 K9S 简介

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

K8S 实用工具之二 - 终端 UI 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 界面,如下图:

K8S 实用工具之二 - 终端 UI K9S

👽️ 快捷键

操作命令备注
显示活跃的键盘助记符和帮助?
显示集群上所有可用的别名和资源ctrl-a or :alias
退出 K9s:q, ctrl-c
使用单数/复数或短名称查看Kubernetes 资源:po⏎接受单数,复数,短名或别名如 podpods
查看给定名称空间中的Kubernetes 资源:alias namespace⏎
过滤出给定过滤器的资源视图/filter⏎支持 Regex2,如` fredblee`来过滤命名为fred 或 blee 的资源
反向正则表达式过滤器/! 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

K8S 实用工具之二 - 终端 UI K9S

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

Pulses - 监控 Dashboard

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

K8S 实用工具之二 - 终端 UI K9S

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

K8S 实用工具之二 - 终端 UI K9S

XRay

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

K8S 实用工具之二 - 终端 UI K9S

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

Popeye

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

如下:

K8S 实用工具之二 - 终端 UI K9S

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

K8S 实用工具之二 - 终端 UI K9S

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

K8S 实用工具之二 - 终端 UI K9S

🔐 直观的 RBAC

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

K8S 实用工具之二 - 终端 UI K9S

✍ 总结

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

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

一起使用吧~ 🤓🤓🤓

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Activiti 工作流入门指南
<divclass"htmledit\_views"id"content\_views"<h1<aname"t0"</a概览</h1<p如我们的介绍部分所述,Activiti目前分为两大类:</p<ul<li<p<ahref"https://activiti.gitbook.io/activiti7deve
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
ASMSupport教程4.8 生成逻辑运算操作
<p在java中有以下逻辑运算符:</p<ul<li&amp;&amp;:条件与</li<li||:条件或</li<li&amp;:布尔型的逻辑与</li<li|:布尔型的逻辑或</li<li^:布尔型的逻辑异或</li<li!:非操作</li</ul<p那么接下来我们将些段例子
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
HTML快捷写法大全
父子用\ \Ulli\3\<ul\    <li\</li\    <li\</li\    <li\</li\</ul\兄弟之间用,也可以省写\pspan\,\ul\<p\</p\<span
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(