插件


概述

K9s 允许您通过插件定义自己的集群命令,从而扩展您的命令行和工具。K9s 会查找 $XDG_CONFIG_HOME/k9s/plugins.yaml 文件来定位所有可用的插件。

此外,K9s 还会扫描以下目录以查找其他插件:

  • $XDG_CONFIG_HOME/k9s/plugins
  • $XDG_DATA_HOME/k9s/plugins
  • $XDG_DATA_DIRS/k9s/plugins

您还可以使用 $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/plugins.yaml 在特定上下文的配置中进一步扩展插件行为。

插件文件的内容可以是一个单独的插件片段、多个片段的集合,或一个完整的插件定义(参见下文示例……)。

一个插件的定义如下:

  • Shortcut 选项代表用户激活插件时需要按下的组合键。
  • Description 将会显示在 k9s 菜单中快捷键的旁边。
  • Scopes 定义了与该插件关联的视图的资源名称/短名称集合。您可以指定 all,为所有视图提供此快捷方式。
  • Command 代表插件在激活时运行的即时命令。
  • Background 指定命令是否在后台运行。
  • Args 指定应应用于上述命令的各种参数。

K9s 提供了额外的环境变量,以便您自定义插件参数。目前可用的环境变量如下:

  • $NAMESPACE – 所选资源的命名空间
  • $NAME – 所选资源的名称
  • $CONTAINER – 当前的容器(如果适用)
  • $FILTER – 当前的过滤器(如果有)
  • $KUBECONFIG – KubeConfig 文件的位置
  • $CLUSTER – 当前活动的集群名称
  • $CONTEXT – 当前活动的上下文名称
  • $USER – 当前活动的用户
  • $GROUPS – 当前活动的组
  • $POD – 在容器视图中时
  • $COL-<RESOURCE_COLUMN_NAME> – 使用所查看资源的给定列名。必须以 COL- 为前缀!

注意:可以看一看 K9s 社区朋友们贡献的一些社区自定义插件


仍在开发中…… 随着此功能的完善,选项和布局在未来的 K9s 版本中可能会发生变化。


示例

这里定义了一个插件,用于通过 ctrl-l 快捷键查看所选 Pod 的日志。

# Define several plugins in a single file in the K9s root configuration
# $XDG_CONFIG_HOME/k9s/plugins.yaml
plugins:

  # Defines a plugin to provide a `ctrl-l` shortcut to tail the logs while in pod view.
  fred:
    # Define a mnemonic to invoke the plugin
    shortCut: Ctrl-L
    # What will be shown on the K9s menu
    description: Pod logs
    # Collections of views that support this shortcut. (You can use `all`)
    scopes:
    - po
    # The command to run upon invocation. Can use Krew plugins here too!
    command: kubectl
    # Whether or not to run the command in background mode
    background: false
    # Defines the command arguments
    args:
    - logs
    - -f
    - $NAME
    - -n
    - $NAMESPACE
    - --context
    - $CONTEXT

同样,您也可以在目录中定义上述插件,可以使用一个文件一个插件,或者多个插件一个文件,如下所示……

以下定义了两个插件,分别名为 fred 和 zorg。

# Multiple plugins in a single file...
# Note: as of v0.40.9 you can have ad-hoc plugin dirs
# Loads plugins fred and zorg
# $XDG_DATA_HOME/k9s/plugins/misc-plugins/blee.yaml
fred:
  shortCut: Shift-B
  description: Bozo
  scopes:
  - deploy
  command: bozo

zorg:
  shortCut: Shift-Z
  description: Pod logs
  scopes:
  - svc
  command: zorg

最后,您还可以将插件片段定义在它们自己的文件中。片段名称将取自文件名。在这种情况下,我们使用一个插件片段定义了一个名为 bozo 的插件。

# $XDG_DATA_HOME/k9s/plugins/schtuff/bozo.yaml
shortCut: Shift-B
description: Bozo
scopes:
- deploy
command: bozo

 返回



© 2025 Imhotep Software LLC. 所有材料均根据 Apache v2.0 许可。