🎁 通过本文希望您可以
- 了解到使用 K9s 如何比直接使用 kubectl 更快捷
- 知道如何初步使用 K9s
- 了解我使用 K9s 的一些常用场景,提供参考
📖 目录
- 🐳 K9s 是什么
- 📦 如何安装
- 🚀 快速上手
- 🔍 常用场景
- 📖 参考
🐳 K9s 是什么
K9s 是一个用于管理 Kubernetes 集群的命令行工具,提供了交互式终端用户界面(TUI),方便用户查看和操作 Kubernetes 资源
通过 K9s,用户可以实时监控集群中各种资源(如 Pod、Deployment、Service 等)的状态变化,以直观的方式呈现信息,快速了解集群的运行情况
在没有 K9s 的情况下,用户主要通过命令行工具 kubectl 与 Kubernetes 交互,而 K9s 则提供了更快捷的处理方式
📦 如何安装
K9s 可在 Linux、macOS 和 Windows 平台上使用。
macOS平台
通过 Homebrew 安装:
brew install derailed/k9s/k9s
通过 MacPort 安装(需要管理员权限):
sudo port install k9s
Linux平台
通过 LinuxBrew 安装:
brew install derailed/k9s/k9s
通过 PacMan 安装:
pacman -S k9s
Windows平台
通过 scoop 安装:
scoop install k9s
通过 chocolatey 安装:
choco install k9s
下载二进制安装
在 github/k9s/release 页面 提供了适用于 Linux、Windows 和 Mac 的二进制文件,用户可以根据需要下载。
🚀 快速上手
连接集群
安装后,直接在终端中输入 k9s
,即可唤醒 K9s 的界面。
我本地安装了 orbStack,可以自动连接到 orbStack 启动的集群。
一般情况下,我都是需要连接到外部集群,可以将外部集群的 kubeconfig 下载到本地,并通过配置环境变量 KUBECONFIG
来实现自动连接,如下所示
export KUBECONFIG=~/Desktop/k8sconfig/your-kubeconfig
布局了解
打开后,我们先看下界面上的布局,这会为我们下一步使用打好基础
我觉得这里右上角 操作帮助 是很重要的,你处理不同资源时,这里会根据资源展示相应可执行的操作,按照提示的快捷键根据自己的需求操作即可
中上方的 命名空间快捷键,可以帮助快速切换命名空间,根据这里的信息点击对应的数字就可以切换不同的命名空间,资源列表展示区 会根据我们选择的命名空间展示对应的资源
左下角 资源类型 展示的就是在 资源列表展示区 展示资源的类型,方便我们确认我们正在处理资源的类型,比如你在处理某个 deployment 下 pod 的容器时,它会是这样的,方便你确认自己处理资源的类型
快速上手
K9s 的使用方法与 vim 类似,它也是号称 A Terminal-Based Vim-Like Kubernetes Dashboard
所以在使用 K9s 前,还是推荐你先学习下 vim 的基本使用,在终端输入 vimtutor
就可以开始了解学习 vim 的一些基本操作了
我们以查看集群中 default 命名空间 pod jenkins-example 的 yaml 为例:
-
输入
:pod + 回车
就能看到 列表资源展示区 展示了 pod 列表信息
-
再根据 命名空间快捷键 输入
3
就可以筛选到 default 命名空间下的 pods 列表了 -
要查看 pod 的 yaml,在光标选中 pod 中,直接按
y
即可 (不用担心你要记忆太多的快捷键,布局中提到的 操作帮助 中就记录了相关的快捷键,比如这里的<y> YAML
)这样就可以看到该 pod 对应的 yaml 资源详情,此时我们可以通过快捷键
c
来 Copy,快捷键e
来 Edit 该 yaml 信息
这样我们就初步尝试了 K9s 的能力,可以看到达到查看 pod yaml 的目标,使用 K9s 只需要几个按键就能搞定,如果使用 kubectl get 的话就会麻烦很多,这也就是 K9s 的优势所在
🔍 常用场景
K9s 常用的一些命令在下表中,资源的操作几乎都是依赖于这张表提供的能力
操作 | 命令 | 注释 |
---|---|---|
显示当前键盘助记符和帮助 | ? | |
显示所有可用资源别名 | ctrl-a | |
退出K9s | :q 、ctrl-c | |
使用单数/复数或短名称查看Kubernetes资源 | : pod⏎ | 接受单数、复数、短名称或别名,如pod或pods |
在给定命名空间中查看Kubernetes资源 | : pod ns-x⏎ | |
查看过滤后的pod | : pod /fred⏎ | 查看所有名称包含fred的pod |
查看带标签的pod | : pod app=fred,env=dev⏎ | 查看所有带有匹配app=fred和env=dev标签的pod |
在给定上下文中查看pod | : pod @ctx1⏎ | 查看上下文ctx1中的所有pod,会切换当前k9s上下文! |
根据过滤器过滤资源视图 | / filter⏎ | 支持正则表达式,如`fred |
反向正则过滤器 | / ! filter⏎ | 保留所有不匹配的内容 |
按标签过滤资源视图 | / -l label-selector⏎ | |
根据过滤器模糊查找资源 | / -f filter⏎ | |
退出视图/命令/过滤器模式 | <esc> | |
用于描述、查看、编辑、查看日志等的键映射 | d 、v 、e 、l 等 | |
查看并切换到另一个Kubernetes上下文(Pod视图) | : ctx⏎ | |
查看并直接切换到另一个Kubernetes上下文(上次使用的视图) | : ctx context-name⏎ | |
查看并切换到另一个Kubernetes命名空间 | : ns⏎ | |
查看所有保存的资源 | : screendump或sd⏎ | |
删除资源(按TAB键和ENTER键确认) | ctrl-d | |
终止资源(无确认对话框,等同于kubectl delete –now) | ctrl-k | |
启动脉冲视图 | : pulses或pu⏎ | |
启动XRay视图 | : xray RESOURCE [NAMESPACE]⏎ | RESOURCE可以是po、svc、dp、rs、sts、ds之一,NAMESPACE是可选的 |
下面我列一些日常用到的命令,供您参考
查看 pod 日志
通过上面的 快速上手 中的步骤,选择到查看的 pod 时,直接输入 l
即可
这样就可以看到 pod 的日志了
编辑 deployment
类似上面提到的查看 pod 资源的步骤,输入 :deployments + 回车
即可进入 deployment 资源的列表页面 (输入 :deployment
的时候会有自动补全)
找到 deployment 后,按照提示输入 e
即可进入编辑模式,编辑完成后,输入 :wq
退出即可
调整 deployment 的 replicas
这是我很喜欢的一个快捷方式,因为某些场景会有要反复 scale 某个 deployment 的要求,手动的 scale 会相对麻烦一些,K9s 就提供了便捷的处理方式
类似的,选择到 deployment 之后,输入 s
即可看到这个页面,输入期望的 replicas 数目就可以修改 deployment 的部署数目
exec 进入 pod 执行命令
这是我最喜欢的一个快捷方式(看到这个功能我才决定入坑 K9s 并写下这篇文章),进入 pod 执行命令几乎是排查问题规避不开的事情,K9s 提供了一个简便的处理办法
在选择到了期望处理的 pod 时,执行 s
即可进入 pod shell 中
进入 pod 后,可以执行相关的命令,如果想要退出 shell,需要输入 ctrl + D
,这样就可以退出编辑页面
数据过滤
比如我们想只展示 jenkins 相关的 pod,我们可以通过过滤方式来展示
过滤 jenkins
pod 的话,只需要输入 /jenkins
即可,想要退出的话,输入 esc
即可
其他场景下过滤也是通用的
📖 参考
K9s 的官方文档
K9s 简易教程
K9s 使用教程:如何高效管理 Kubernetes 集群
💬 后记
看 K9s 的官方文档,K9s 还提供了性能测试、多集群管理相关的功能,还有其他丰富的外观和热键配置
初步使用阶段还没有使用过这些功能,如果后续有类似经验,会继续更新文章