通常,我关于 Kubernetes 管理的文章中充满了用于管理集群的 kubectl 命令。然而,最近有人向我推荐了k9s项目,以快速查看和解决 Kubernetes 中的日常问题。这是对我的工作流程的巨大改进,我将在本教程中向您展示如何开始。

可以在 Mac、Windows 和 Linux 上进行安装。每个操作系统的说明可以在这里找到。一定要完成安装才能继续。

我将使用 Linux 和 Minikube,这是一种在个人计算机上运行 Kubernetes 的轻量级方式。按照本教程或使用文档安装它。

设置k9s配置文件

一旦你安装了 k9s 应用程序,最好从 help 命令开始。

$ k9s 帮助

K9s 是一个用于查看和管理 Kubernetes 集群的 CLI。

用法:

k9s [标志]

k9s [命令]

可用命令:

help 关于任何命令的帮助

info 打印配置信息

version 打印版本/构建信息

标志:

-A, --all-namespaces 在所有命名空间中启动 K9s

--as string 模拟操作的用户名

--as-group stringArray 模拟操作的组

--certificate-authority string 证书颁发机构证书文件的路径

--client-certificate string TLS 客户端证书文件的路径

--client-key string TLS 的客户端密钥文件的路径

--cluster string 要使用的 kubeconfig 集群的名称

-c, --command string 指定应用程序启动时查看的默认命令

--context string 要使用的 kubeconfig 上下文的名称

--demo 启用演示模式以显示键盘命令

--headless 关闭 K9s 标头

-h, --help k9s 帮助

--insecure-skip-tls-verify 如果为 true,则不会检查服务器的 caCertFile 的有效性

--kubeconfig 字符串 用于 CLI 请求的 kubeconfig 文件的路径

-l, --logLevel string 指定日志级别(info、warn、debug、error、fatal、panic、trace)(默认为“info”)

-n, --namespace string 如果存在,此 CLI 请求的命名空间范围

--readonly 禁用所有修改集群的命令

-r, --refresh int 将默认刷新率指定为整数(秒)(默认为 2)

--request-timeout string 在放弃单个服务器请求之前等待的时间长度

--token string 用于向 API 服务器进行身份验证的不记名令牌

--user string 要使用的 kubeconfig 用户的名称

使用“k9s [command] --help”获取有关命令的更多信息。

如您所见,我们可以使用 k9s 配置很多功能。我们需要采取的唯一步骤是编写配置文件。 info 命令将指向我们应用程序正在寻找它的位置。

$ k9s 信息

____ __.________

| |/ _/ __ \______

| < \____ / ___/

| | \ / /\___ \

|____|__ \ /____//____ >

/ /

配置: /Users/jess/.k9s/config.yml

日志: /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-jess.log

屏幕转储: /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-screens-jess

要添加文件,如果该目录不存在,则创建该目录,然后添加一个。

$ mkdir -p ~/.k9s/

$ 触摸 ~/.k9s/config.yml

对于此介绍,我们将使用 k9s 存储库中的默认 config.yml 建议。维护人员注意,此格式可能会更改,因此我们可以在此处查看以获取最新版本。

故事:

刷新率:2

无头:假

只读:假

没有图标:假

记录器:

尾巴:200

缓冲区:500

自秒:300

全屏日志:假

文字换行:假

演出时间:假

当前上下文:minikube

当前集群:minikube

集群:

                                                 :

命名空间:

积极的: ””

收藏夹:

  • 全部

  • 成为系统

  • 默认

看法:

活跃:dp

阈值:

中央处理器:

关键:90

警告:70

记忆:

关键:90

警告:70

我们将 k9s 设置为查找本地 minikube 配置,因此我将确认 minikube 已在线并准备就绪。

$ minikube 状态

主持人:跑步

立方体:运行

apiserver:正在运行

kubeconfig:已配置

运行k9s探索Kubernetes集群

设置好配置文件并指向我们的本地集群,我们现在可以运行 k9s 命令。

$ k9s

一旦你启动它,就会弹出 k9s 基于文本的用户界面(UI)。如果没有命名空间的标志,它将显示默认命名空间中的 pod。

K9s截图

如果您在有很多 pod 的环境中运行,默认视图可能会让人不知所措。或者,我们可以专注于给定的命名空间。退出应用程序并运行 k9s -n <namespace> 其中 <namespace> 是现有的命名空间。在下图中,我运行了 k9s -n minecraft, 它显示了我损坏的 pod

k9s截图

因此,一旦您启动并运行了 k9s,您就可以快速完成很多事情。

导航 k9s 是通过快捷键进行的。我们总是可以使用箭头键和回车键来选择列出的项目。还有很多其他通用按键可以导航到不同的视图:

  • 0 - 显示所有命名空间中的所有 pod

k9s截图

  • d——描述选中的 pod

k9s截图

  • l - 显示所选 pod 的日志

使用 k9s 展示 Kubernetes pod 日志

你可能会注意到 k9s 设置为使用Vim 命令键,包括使用 JK 键上下移动。祝你好运,emacs用户:)

快速查看不同的 Kubernetes 资源

需要找到不是 pod 的东西吗?是的,我也是。当我们输入冒号 (":") 键时,有许多快捷方式可用。从那里,您可以使用以下命令在那里导航。

  • :svc - 跳转到服务视图。

k9s截图

  • :deploy - 跳转到部署视图。

k9s截图

  • :rb - 跳转到角色绑定视图以进行基于角色的访问控制 (RBAC)管理。

k9s截图

  • :namespace——跳回命名空间视图。

K9s截图

  • :cj - 跳转到 cronjobs 视图以查看集群中计划了哪些作业。

k9s截图

此应用程序最常用的工具是键盘。要在任何页面上向上或向下,请使用箭头键。如果您需要退出,请记住使用 Vim 键绑定。输入 :q 并按 Enter 离开。

用k9s排查Kubernetes的例子

当出现问题时,k9s 如何提供帮助?举个例子,我让几个 pod 由于配置错误而死掉。下面你可以看到我糟糕的 hello 部署崩溃了。一旦我们突出显示它,我们按 d 运行 describe 命令以查看导致失败的原因。

k9s截图

K9s截图

浏览事件并不能告诉我们失败的原因。接下来,我按下 esc 键并通过突出显示 pod 并输入 <shift-l> 来检查日志。

k9s截图

不幸的是,日志也没有提供任何有用的信息(可能是因为部署从未正确配置),并且 pod 不会出现。

然后我 esc 退出,我会看看删除 pod 是否会解决这个问题。为此,我突出显示 pod 并使用 <ctrl-d>。值得庆幸的是,k9s 在删除前会提示用户。

K9s截图

虽然我确实删除了 pod,但部署资源仍然存在,因此会重新启动一个新的 pod。无论出于何种原因(我们还不知道),它也将继续重新启动和崩溃。

在这里,我会重复查看日志、描述资源,并使用 e 快捷方式甚至编辑正在运行的 pod 以解决行为问题。在这种特殊情况下,失败的 pod 未配置为在此环境中运行。因此,让我们删除部署以停止我们所处的 crash-then-reboot 循环。

我们可以通过键入 :deploy 并单击 Enter 来进行部署。从那里我们突出显示并按 <ctrl-d> 删除。

k9s截图

K9s截图

并且部署消失了!只需要敲几下按键就可以清理这个失败的部署。

k9s 非常可定制

所以这个应用程序有大量的自定义选项,包括 UI 的配色方案。以下是您可能感兴趣的一些可编辑选项:

  • 调整您放置 config.yml 文件的位置(以便您可以将其存储在版本控制中)

  • 将自定义别名添加到 alias.yml 文件

  • hotkey.yml 文件中创建自定义热键

  • 探索可用的插件或编写自己的

整个应用程序在 YAML 文件中进行配置,因此任何 Kubernetes 管理员都会对自定义感到熟悉。

用k9s简化你的生活

我倾向于以非常手动的方式管理团队的系统,更多的是用于大脑训练而不是其他任何事情。当我第一次听说 k9s 时,我想,“这只是懒惰的 Kubernetes”,所以我不理会它,并重新开始在任何地方进行手动干预。实际上,我每天都在处理积压的工作时开始使用它,我对它比单独使用 kubectl 快得多感到震惊。现在我是一个皈依者。

了解您的工具并掌握做某事的“艰难方式”很重要。同样重要的是要记住,就管理而言,更聪明地工作很重要,而不是更努力地工作。使用 k9s 是我实现这一目标的方式。我想我们可以称之为懒惰的 Kubernetes 管理,这没关系。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐