kubernetes应用-终端版集群管理神器-k9s
kubernetes 集群管理神器 k9s .
写在前面
市面上开源的 kubernetes 管理平台有很多,有命令行、桌面版,也有 web 终端,总的来说,不同的场景有不同的产品适用,但对于运维来说,如果有一款快速、高效、使用简单、操作方便的工具,那更再好不过了。
开始之前,我们先说说常见的几款管理工具:
-
rancher
一开始我用 web ui 版本的管理工具,就是用的 rancher ,我用的时候,才 2.3 的版本,现在估计已经是 2.7 了。而且自从被收购了以后,有种越做越差的感觉,如果是开放给开发群体使用,用它来做权限控制还是不错的。
-
kubesphere
青云的 kubesphere web ui 做得也不错,但是它使用起来也是有一些不太如意的地方,比如 web ui 一些资源相关的字段展示需要一个个点进去才能看,就没那么直观,而且多集群管理需要在每个集群上都部署一套(不知道现在改了没有)就很笨重,也不怎么好用。
-
kubeboard
大部分人一开始接触 kubernetes ,各种教程都会说要你装这个来做图形化界面管理,中规中矩,没什么亮点也没什么大的缺点,我平时也很少使用。
k9s 介绍
接下来我们说说 k9s 这款管理工具。我忘记之前是在哪个不起眼的网站看到的了,怀着试试的心态,试了一下,觉得非常得心应手,从此就爱上了这款工具。(不是广告,纯属好物分享。)
官方GitHub
我们简单介绍一下使用体验,具体用法和参数,移步官方GitHub:“derailed/k9s”
安装
按照 GitHub 提供的几种方法安装即可,我用的是二进制文件安装,然后配好环境变量 直接敲打 k9s
就可以开始起飞了。
操作
- 一开始进来的时候,默认是 default 命名空间的 pod 视图,如果你的默认命名空间如果没有 pod 的话,是一片空白的。
- 根据顶部导航栏的提示,我们按下
0
,显示所有命名空间下的 pod 。
-
这里所有命名空间下的 pod 一览无遗,包括监控数据,pod 的健康情况,节点,重启次数等等,当然了, pod 数量比较多的情况下,可能会有点晃眼,但是,你可以根据上面的导航学会过滤命名空间, pod 等资源,操作快速简单,比如我要从几千个 pod 过滤出 kube-system 下的 coredns pod 。
-
按下
/
键,输入想要过滤的任意值,如 core 或者 dns ,或者随便一个你想要的字母数字等。
-
coredns 的 pod 很快就被过滤出来了,就算有几千 pod ,也是 1-2 秒的事情,它是有缓存资源信息到本地的。
-
如果不太清楚怎么操作,可以按
?
查看帮助文档,很详细,比如资源类型切换,我想从 pod 切换到 node 节点视图,怎么操作? -
按下
:
会出来一个资源过滤框,输入资源名称或者缩写,比如 deployment ,输入 dp 即可(具体可以参考官方GitHub,自己定义资源名称简写也是可以的),输入node
我们切换到 node 资源看看。
- 我们如果想看资源的具体详细配置,怎么看?回到 pod 资源界面(你自己想看其他资源一样的操作),我们随便找个 pod 看看,用方向键选中想要查看的 pod ,按下
Y
键。用方向键或者 pageup 、 pagedown 操作,跟 vim 一样,因为它可以指定文本编辑器来查看详情,默认就是 vim 。
- 如果想进入容器排查网络相关或者文件系统相关的故障,我们可以在选中的 pod 上面按下
S
键,即可进入 pod 里面的,包含 sidecar 容器的话,多个容器会出来一个容器列表让你选择要进入具体哪个容器。
- 查看日志,这个可以查看容器的标准输出,如果你的日志是落盘到文件系统上面,且没有输出到标准输出,这里是看不到日志的。按下
L
键查看。
- 它还有很多很多操作,比如我要查看 crd 资源,我要看 clusterrole 资源,按照上面的方法,输入
:
输入对应的资源类型名称即可,比如 clusterrole 。
很方便,很快速,很简单,简直大爱,说了这么多,还有一个问题,那就是多集群管理呢?
多集群
-
在开始多集群管理之前,我们需要对 kubeconfig 做一个融合操作,把想要管理的集群配置文件融合到一起,方便上下文切换。
-
操作如下:
修改 kubeconfig 相关字段,方便识别。
|
|
上下文融合到一起。
|
|
- 打开 k9s ,输入
:
+ctx
。
使用键盘方向键选择想要的集群按回车即可。
总结
笔者在多集群这一步也是使用了 k9s 很久一段时间后才搞明白,第一是它官方 GitHub 没有写,第二是别人对 k9s 的文章也都是复制粘贴的,一模一样,标点符号都没改,都没提及这个。
不过多集群管理我也是很少用:
-
怕操作失误,等下是要在开发环境操作的东西,忘记切换上下文变成在生产环境操作,那就 GG 了。
-
环境隔离,用的
alias
的方法,不同环境配置了不同的启动别名,就不会搞错了。当然,你们如果很自信的话,可以多环境放一起切换操作。