Kubernetes预装了一个出色的CLI。对于基本的操作,它工作得非常好。然而,当一个人需要快速做一些事情时,复杂性就会增加。
Kubernetes社区已经建立了各种基于网络的工具来监控你的集群 -Kube ops view,grafana等。然而,拥有一个完全配套的终端将迅速加快找到问题根源的时间。它构成了你的瑞士军刀的一个基本部分。
以下是我应用于OSX终端的一个非常简短的开源工具清单。当一起使用时,它们允许我跳过我的kubernetes集群,快速排除问题,并监控行为。我删掉了很多小的实用程序,坚持使用我发现自己每天都在使用的工具。
在任何工具之前...
在你使用这些工具之前,我强烈建议安装zsh。它是一个杰出的、开源的、围绕标准OSX终端的包装。它的功能更丰富、更直观,你可以安装的插件也非常棒。这些工具中有些是假设你已经安装了ZSH的。
k9s
K9s是kubernetes集群的CLI工具的母体。你可以用一个键直接进入pod,查看日志,删除资源和更多。它为你将要执行的最常见的操作提供了出色的访问。对于任何使用kubernetes的工程师来说,这是一个主要的工具。
kubectx
我们只有一个单一的集群是非常罕见的。在这些之间进行切换就像:
kubectl config use-context my-context
但对于这一点,有一些先决条件:
- 在运行之前,你需要知道集群的名称。
- 还有一个类似的set-context命令,可能会把你绊倒。
kubectx提出了一个更简单的替代方案。如果你单独运行kubectx,它将列出你的.kube/config文件中所有的上下文。然后你可以提供你感兴趣的上下文的名称:
kubectx my-context
不需要记住所有的上下文,不需要手动检查文件,也不可能得到错误的命令。不错,很简单。与k9s结合起来,这为你的CLI提供了大量的导航功能,只需按下最少的键。
编辑: 我原来说过,k9s不能支持上下文之间的切换。Fernand Galiana的精彩回应指出,通过:ctx命令,这是有可能的。
kubens
一旦你在上下文之间飞来飞去,你可能想挖掘一个特定的命名空间。再一次,在你的集群中拥有超过几个命名空间是非常常见的。好吧,ahmetb(给你带来kubectx的那位先生)也把kubens放在一起。它与kubectx相同,只是针对命名空间:
kubens kube-system
现在你所有的命令都是默认针对kube-system命名空间运行的。你也可以不需要其他东西就运行kubens来查看命名空间的列表。
kube-ps1
所以,你可以在上下文和命名空间之间切换。但你怎么知道你目前的目标是哪一个?不断检查是件很痛苦的事。目前,要知道你需要运行:
kubens
为了消除这个问题,ps1是一个zsh插件,它会自动显示你当前的上下文和命名空间。
我指的是我的minikube上下文和默认的名字空间
现在你可以看到你指的是哪个命名空间和上下文,而不需要运行任何一个命令。它也是高度可配置的--你可以关闭命名空间或上下文,如果你只对其中一个感兴趣,或者你可以使用kubeoff来完全禁用整个事情。
popeye
popeye会自动扫描你版本库中的资源,并指出明显的问题。这是一个非常新的工具,我发现它非常有用。如果你正在为你的集群寻找一些春季清洁工作,从popeye开始会给你一些明确的指示,告诉你哪些地方需要修复。
这是一份非常长的详细报告的前几行。
Stern
使用过kubectl日志吗?注意到你一次只能关注一个pod的日志?好吧,不用再担心了!Stern是一个工具,它允许你根据一个非常灵活的查询,从多个pod中提取日志。