Kubernetes预先包装了出色的CLI。 对于基本操作,它的运行非常出色。 las,当需要快速执行某项操作时,复杂性就会增加。
Kubernetes社区已经构建了各种基于Web的工具来监视您的集群-kube ops视图,grafana等。但是,拥有完整的终端设备将迅速加快解决问题的根源。 它构成了瑞士军刀的基本组成部分。
以下是我已应用于OSX终端的开源工具的简短列表。 一起使用时,它们使我可以跳过kubernetes集群,快速解决问题并监控行为。 我删去了许多小的实用工具,并坚持使用每天都能使用的工具。
在使用任何工具之前……
在使用这些工具之前,我强烈建议您安装zsh。 它是围绕标准OSX终端的出色的开源包装器。 它具有丰富的功能和直观的功能,您可以安装的插件很棒。 列出的其中一些工具假定您已安装ZSH。
k9s
> oh yes
我开始坚强。 K9s是用于Kubernetes集群的CLI工具的后盾。 您可以通过一次按键直接SSH到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
因此,您可以在上下文和名称空间之间切换。 但是,您怎么知道您当前针对的是哪一个呢? 继续检查很痛苦。 目前,要找出答案,您需要运行:
- kubenskubectxkubectl
要删除此问题,ps1是一个zsh插件,它将自动向您显示您当前的上下文和名称空间:
> I'm pointing at my minikube context and the default namespace
现在,您无需运行任何命令即可查看要指出的名称空间和上下文。 它也具有高度可配置性-如果您只对名称空间或上下文感兴趣,则可以将其关闭,或者可以使用kubeoff完全禁用整个功能。
popeye
现在,进入一些不同的地方。 popeye将对存储库中的资源进行自动扫描,并突出显示明显的明显问题。 这是一个非常新的工具,我发现它非常有用。 如果您要在集群中进行一些春季大扫除,那么从popeye开始将为您提供一些需要修复的明确指示。
> This was the first few lines of a very long, detailed report.
Stern
曾经使用过kubectl logs吗? 是否注意到您一次只能跟踪一个Pod中的日志? 好吧,不用担心! Stern是一种工具,可让您基于非常灵活的查询从多个Pod中提取日志。
我经常在我的Twitter帐户上谈论kubernetes,DevOps等。