如何设置一个严格的Kubernetes终端

1,027 阅读4分钟

图像.png

Kubernetes 预先打包了一个出色的 CLI。对于基本操作,它的效果非常好。唉,当一个人需要快速做某事时,复杂性就会增加。

Kubernetes 社区已经构建了各种基于 Web 的工具来监控您的集群*——kube ops view*、grafana等。然而,拥有一个完整的终端将迅速加快找到问题根源所需的时间。它构成了您的瑞士军刀的基本组成部分。

以下是我应用于 OSX 终端的非常简短的开源工具列表。当一起使用时,它们允许我跳过我的 kubernetes 集群,快速解决问题并监控行为。我已经删掉了很多小的实用程序,并坚持使用我发现自己每天都在使用的工具。

在任何工具之前...

在您使用这些工具之前,我强烈建议您安装zsh。它是围绕标准 OSX 终端的出色的开源包装器。它功能更丰富、更直观,您可以安装的插件非常棒。列出的其中一些工具假设您已安装 ZSH。

k9s

图像.png 哦是的

我开始坚强。K9s 是 kubernetes 集群的 CLI 工具的妈妈。您只需按一下键即可通过 SSH 直接进入 Pod、查看日志、删除资源等。它为您将要执行的最常见操作提供出色的访问权限。这是任何使用 kubernetes 的工程师的主要内容。

kubectx

我们只有一个集群是非常罕见的。在这些之间切换很简单

kubectl 配置使用上下文我的上下文

但是有了这个,有一些先决条件:

  • 在运行之前,您需要知道集群的名称。
  • 还有另一个类似的set-context命令可能会绊倒你。

kubectx提出了一个更简单的替代方案。如果你kubectx自己运行,它会列出你文件中的所有上下文.kube/config。然后,您可以提供您感兴趣的上下文的名称:

kubectx 我的上下文

不需要记住所有的上下文,不需要手动检查文件,也没有得到错误命令的可能性。好看又简单。与 相结合k9s,这提供了大量的 CLI 导航性,只需最少的按键操作。

**编辑:**我最初声明k9s不能支持上下文之间的切换。来自的精彩回应

费尔南·加利亚纳

指出,使用该:ctx命令,这是可能的。

库本斯

在浏览上下文后,您可能想要深入研究特定的命名空间。再一次,在您的集群中拥有多个命名空间是很常见的。嗯,ahmetb(带你来的那位先生kubectx)也凑齐了kubens。它与 相同kubectx,仅适用于命名空间。

kubens kube-system

现在kube-system,默认情况下,您的所有命令都针对命名空间运行。您还可以在没有任何其他内容的情况下运行kubens以查看名称空间列表。

kube-ps1

因此,您可以在上下文和命名空间之间切换。但是你怎么知道你目前的目标是哪一个?继续检查很痛苦。目前,要找出你需要运行:

库本斯
kubectx
kubectl <我的命令>

要删除它,ps1是一个 zsh 插件,它会自动显示您当前的上下文和命名空间:

图像.png 我指的是我的 minikube 上下文和默认命名空间

现在,您无需运行单个命令即可查看您指出的命名空间和上下文。它也是高度可配置的——你可以关闭命名空间或上下文,如果你只对其中之一感兴趣,或者你可以使用kubeoff完全禁用整个事情。

大力水手

现在,来点不同的东西。popeye将对存储库中的资源运行自动扫描,并突出显示清晰、明显的问题。这是一个非常新的工具,我发现它非常有用。如果您正在寻找要在集群中进行的春季大扫除,从开始popeye会给您一些需要修复的明确指示。

图像.png 这是一份很长很详细的报告的前几行。

斯特恩

用过kubectl logs吗?注意到您一次只能跟踪一个 pod 中的日志吗?好了,不用再担心了!Stern 是一种工具,允许您基于非常灵活的查询从多个 pod 中提取日志。