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

278 阅读4分钟

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中提取日志。