杨峰 译 分布式实验室
Kubernetes内置了非常不错的CLI包。对于基础操作足够用了,但是对于一些高阶用户,就显得不够用了。Kubernetes社区开发了kube ops view[1]、Grafana[2]等基于Web的监控工具,但是如果有一个基于终端的工具会大幅度提高错误定位效率,就跟瑞士军刀一样实用。
以下列出了我的苹果终端中安装的开源工具,用起来得心应手。这些小工具我基本上每天都会用到。
准备工作
建议配置这些工具之前先安装ZSH[3],对苹果系统来说非常棒的开源shell,功能非常丰富而且很炫酷。
k9s
k9s是Kubernetes集权管理最棒的CLI工具,可以通过key直接SSH进入Pod,查阅日志,删除资源等。k9s提供大量日常操作,是Kubernetes必备工具。
kubectx
k9s不支持Kubernetes集群config上下文之间切换,对于经常管理多个Kubernetes集群用户来说不太方便。kubectx可以提供如下操作命令进行上下文切换:
kubectl config use-context my-context
当然有些前提条件:
需要知道集群名
有类似于 set-context的命令行
kubectx my-context
不需要记住这些上下文,也不需要手工选择上下文,避免出现错误命令,简单又有效。跟k9s配合,提供强大的功能组合。
kubens
搞定上下文后,可以深入到特定的命名空间,因为集群内部有很多命名空间。ahmetb先生(kubectx的贡献者)再次提供了kubens,用于命名空间的操作。
kubens kube-system
随后的命令默认都是基于选择的命名空间进行的。单独运行kubens会列出所有命名空间名字。
kube-ps1
如何确认在哪个上下文和命名空间操作呢?需要用如下命令:
kubens kubectx kubectl
为了简化,ps1是zsh中自动显示上下文和命名空间的插件:
有了它就可以不用命令看出目前运行的上下文和命名空间。这个插件也是高度可配置的,可以同时看上下文和命名空间,或者只看一个,或者完全关闭。
popeye
popeye是自动扫描repo中资源并将问题高亮出来的工具,这是一个很新但很有用的功能。如果需要清理集群内问题,最好安装这个工具。
stern
如果有需求用kubectl一次看多个Pod的日志,可以用stern这个工具将日志从多个Pod中拉出来,非常方便实用。
相关链接:
https://github.com/hjacobs/kube-ops-view
https://medium.com/htc-research-engineering-blog/monitoring-kubernetes-clusters-with-grafana-e2a413febefd
https://ohmyz.sh/