k8s中如何配置多功能终端

k8s内置了非常不错的CLI包。对于基础操作足够用了,但是对于一些高阶用户,就显得不够用了。k8s社区开发了kube ops view, grafana等基于web监控工具,但是如果有一个基于终端的工具会大幅度提高错误定位效率,就跟瑞士军刀一样实用。

一下列出了我的苹果终端中安装的开源工具,用起来得心应手。这些小工具我基本上每天都会用到。

准备工作

建议配置这些工具之前先安装zsh,对苹果系统来说非常棒的开源shell,功能非常丰富而且很炫酷。

k9s

k9s是k8s集权管理最棒的CLI工具,可以通过key直接SSH进入pods,查阅日志,删除资源等。k9s提供大量日常操作,是k8s必备工具。

kubectx

k9s不支持k8s 集群config上下文之间切换,对于经常管理多个k8s集群用户来说不太方便。kubectx可以提供如下操作命令进行上下文切换:

kubectl config use-context my-context

当然有些前提条件:

– 需要知道集群名

– 有类似于 set-context 的命令行

kubectx是替换命令,如果单独运行,会列出.kube/config中的所有上下文,需要从中选择一个继续运行:

kubectx my-context

不需要记住这些上下文,也不需要手工选择上下文,避免出现错误命令,简单又有效。跟k9s配合,提供强大的功能组合。

kubens

搞定上下文后,可以深入到特定的命名空间,因为集群内部有很多命名空间。ahmetb先生(kubectx的贡献者)再次提供了kubens,用于命名空间的操作。

kubens kube-system

随后的命令默认都是基于选择的命名空间进行的。单独运行kubens会列出所有命名空间名字。

kube-ps1

如何确认在哪个上下文和命名空间操作呢?需要用如下命令:

kubens

kubectx

kubectl 

为了简化,ps1是zsh中自动显示上下文和命名空间的插件:

有了它就可以不用命令看出目前运行的上下文和命名空间。这个插件也是高度可配置的,可以同时看上下文和命名空间,或者只看一个,或者完全关闭。

popeye

popeye是自动扫描repo中资源并将问题高亮出来的工具,这是一个很新但很有用的功能。如果需要清理集群内问题,最好安装这个工具。

stern

如果有需求用kubectl一次看多个pods的日志,可以用stern这个工具将日志从多个pods中拉出来,非常方便实用。