kubectl 插件推荐: kubectl-watch

2022-11-29 15:34:07 浏览数 (1)

作者:imuxin

灵雀云后端工程师

今天给大家推荐一个插件:kubectl-watch kubectl-watch:一个可以监听 kubernetes 资源的变更信息的 kubectl 插件。其中变更的内容通过使用 delta[1]difftastic[2] 工具提供漂亮的终端界面展示。

使用 delta 概览

使用 difftastic 概览

安装说明

【推荐】 方式一:使用 Docker 镜像

  1. 您需要在环境里预先安装好 Docker,参考 官网[3];或者安装 containerd,参考 安装教程[4]nerdctl[5] 命令行工具。
  2. 拷贝 script 目录下的 kubectl-watch 脚本到环境的 $PATH 其中的一个目录下,比如 /usr/local/bin
代码语言:javascript复制
cp script/kubectl-watch /usr/local/bin/
chmod  x /usr/local/bin/kubectl-watch

方式二:从 release assets[6] 下载可执行制品。

方式三:使用 Cargo[7]进行源码编译安装。

代码语言:javascript复制
cargo install kubectl-watch --locked

Cmd 帮助

代码语言:javascript复制
USAGE:
    kubectl-watch [OPTIONS] [ARGS]

ARGS:
    <RESOURCE>    Support resource 'plural', 'kind' and 'shortname'
    <NAME>        Resource name, optional

OPTIONS:
    -A, --all                       If present, list the requested object(s) across all namespaces
        --diff-tool <DIFF_TOOL>     Diff tool to analyze delta changes [default: delta] [possible values: delta, difft]
        --export <EXPORT>           A path, where all watched resources will be strored
    -h, --help                      Print help information
        --include-managed-fields    Set ture to show managed fields delta changes
    -l, --selector <SELECTOR>       Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2)
    -n, --namespace <NAMESPACE>     If present, the namespace scope for this CLI request
    -s, --skip-delta                Skip show delta changes view
        --use-tls                   Use tls to request api-server
    -V, --version                   Print version information

参考实例

监听所有命名空间下的 deployment 资源

代码语言:javascript复制
kubectl-watch deployment -A

监听某个命名空间下的 depoyment 资源

代码语言:javascript复制
kubectl-watch deployment -n {namespace}

监听某个命名空间下的某个 depoyment 资源

代码语言:javascript复制
kubectl-watch deployment -n {namespace} {name}

追加 --skip-delta 选项,仅监听变动资源,同 kubectl get -w

代码语言:javascript复制
kubectl-watch {resource} --delta

追加 --diff-tool difft 选项来使用 difftastic 工具显示变化内容

代码语言:javascript复制
kubectl-watch {resource} --diff-tool difft

追加 --export "/to/your/path" 选项,导出监听的资源到本地存储

代码语言:javascript复制
kubectl-watch {resource} --export "/to/your/path"

managed-fields 默认是不进行比对的, 追加 --include-managed-fields 选项,展示 managed fields 的变化

代码语言:javascript复制
kubectl-watch {resource} -include-managed-fields

致谢

  • delta[8]
  • difftastic[9]
  • kube-rs[10]
  • rust[11]

引用链接

[1]

delta: https://github.com/dandavison/delta

[2]

difftastic: https://github.com/Wilfred/difftastic

[3]

官网: https://docs.docker.com/engine/install/

[4]

安装教程: https://github.com/containerd/containerd/blob/main/docs/getting-started.md#installing-containerd

[5]

nerdctl: https://github.com/containerd/nerdctl

[6]

release assets: https://github.com/imuxin/kubectl-watch/releases

[7]

Cargo: https://crates.io/crates/kubectl-watch

[8]

delta: https://github.com/dandavison/delta

[9]

difftastic: https://github.com/Wilfred/difftastic

[10]

kube-rs: https://github.com/kube-rs/kube-rs

[11]

rust: https://github.com/rust-lang/rust

0 人点赞