写点什么

Kubectl Plugin 推荐(一)| 可观测性篇

用户头像
郭旭东
关注
发布于: 2021 年 03 月 05 日
Kubectl Plugin 推荐(一)| 可观测性篇

前言


kubectl 作为最重要的 Kubernetes 客户端工具一直以来都被广泛的应用与各种场景,其对于 YAML 工程师的作用就像战士手中的枪,用的好不好完全可以影响到 YAML 工程师的整体工作效率。虽然 kubectl 本身迭代的速度非常快,但是也很难满足所有人的全部需求,这时 kubectl 的插件机制就可以很好的弥补这个问题。


Krew


Krew 是 kubernetes SIG 项目,是 kubectl 的插件管理器,其提供了类似 brew 的包管理功能,用户可以方便的使用 krew 安装和使用 kubectl 插件,极大的方便了 kubectl 插件的开发和管理。


安装


Krew 虽然也可以使用 brew 进行安装,但是官方貌似并不积极支持该方式。这里使用如下命令脚本来完成安装:


(  set -x; cd "$(mktemp -d)" &&  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.tar.gz" &&  tar zxvf krew.tar.gz &&  KREW=./krew-"${OS}_${ARCH}" &&  "$KREW" install krew)
复制代码

脚本运行成功后,将 $HOME/.krew/bin 添加到 PATH 中,在 .bashrc 或 .zshrc 文件中添加以下内容:


export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
复制代码

添加完成后请重启终端,使用 kubectl krew 检查是否安装成功。


插件推荐


接下来推荐一些增强可观测性的 kubectl plugin。


tree


该插件是由 Google 大佬开发,通过 ownerReferences 来发现 kubernetes 对象之间的相互关联,并通过树状图来展示,对资源的关系一目了然。


项目地址:https://github.com/ahmetb/kubectl-tree


安装

$ kubectl krew install tree$ kubectl tree --help
复制代码

示例

kubectl tree


status


kubectl-status 这个插件简化了 get 和 describe 操作,采用不同颜色和箭头等元素来展示 kubernetes 资源的生命周期和状态信息,可以查看单个资源,也可以查看该 namespace 下的所有该资源的状态,极大的缩短了问题排查的时间,减少了操作步骤。


项目地址:https://github.com/bergerx/kubectl-status


安装

$ kubectl krew install status$ kubectl status --help
复制代码

示例

Pod


StatefulSet


view-allocations


kubectl-view-allocations 可以非常方便的展示 CPU、内存、GPU 等资源的分布情况,并可以对 namespace、node、pod 等维度进行展示。


项目地址:https://github.com/davidB/kubectl-view-allocations


安装


脚本安装


$ curl https://raw.githubusercontent.com/davidB/kubectl-view-allocations/master/scripts/getLatest.sh | bash
复制代码


krew


$ kubectl krew install view-allocations
复制代码


cargo


$ cargo install kubectl-view-allocations
复制代码

示例


展示 GPU 的分配情况


$ kubectl-view-allocations -r gpu
Resource Requested Limit Allocatable Free nvidia.com/gpu (71%) 10.0 (71%) 10.0 14.0 4.0 ├─ node-gpu1 (0%) 0.0 (0%) 0.0 2.0 2.0 ├─ node-gpu2 (0%) 0.0 (0%) 0.0 2.0 2.0 ├─ node-gpu3 (100%) 2.0 (100%) 2.0 2.0 0.0 │ └─ fah-gpu-cpu-d29sc 2.0 2.0 ├─ node-gpu4 (100%) 2.0 (100%) 2.0 2.0 0.0 │ └─ fah-gpu-cpu-hkg59 2.0 2.0 ├─ node-gpu5 (100%) 2.0 (100%) 2.0 2.0 0.0 │ └─ fah-gpu-cpu-nw9fc 2.0 2.0 ├─ node-gpu6 (100%) 2.0 (100%) 2.0 2.0 0.0 │ └─ fah-gpu-cpu-gtwsf 2.0 2.0 └─ node-gpu7 (100%) 2.0 (100%) 2.0 2.0 0.0 └─ fah-gpu-cpu-x7zfb 2.0 2.0
复制代码


展示 namespace 维度资源的分配情况


$ kubectl-view-allocations -g namespace
Resource Requested Limit Allocatable Free cpu (21%) 56.7 (65%) 176.1 272.0 95.9 ├─ default 42.1 57.4 ├─ dev 5.3 102.1 ├─ dns-external 200.0m 0.0 ├─ docs 150.0m 600.0m ├─ ingress-nginx 200.0m 1.0 ├─ kube-system 2.1 1.4 ├─ loki 1.2 2.4 ├─ monitoring 3.5 7.0 ├─ sharelatex 700.0m 2.4 └─ weave 1.3 1.8 ephemeral-storage (0%) 0.0 (0%) 0.0 38.4T 38.4T memory (8%) 52.7Gi (15%) 101.3Gi 675.6Gi 574.3Gi ├─ default 34.6Gi 60.0Gi ├─ dev 5.3Gi 22.1Gi ├─ dns-external 140.0Mi 340.0Mi ├─ docs 448.0Mi 768.0Mi ├─ ingress-nginx 256.0Mi 1.0Gi ├─ kube-system 840.0Mi 1.0Gi ├─ loki 1.5Gi 1.6Gi ├─ monitoring 5.9Gi 5.7Gi ├─ sharelatex 2.5Gi 7.0Gi └─ weave 1.3Gi 1.8Gi nvidia.com/gpu (71%) 10.0 (71%) 10.0 14.0 4.0 └─ dev 10.0 10.0 pods (9%) 147.0 (9%) 147.0 1.6k 1.5k ├─ cert-manager 3.0 3.0 ├─ default 13.0 13.0 ├─ dev 9.0 9.0 ├─ dns-external 2.0 2.0 ├─ docs 8.0 8.0 ├─ ingress-nginx 2.0 2.0 ├─ kube-system 43.0 43.0 ├─ loki 12.0 12.0 ├─ monitoring 38.0 38.0 ├─ sharelatex 3.0 3.0 └─ weave 14.0 14.0
复制代码


images


kubectl-images 可以展示集群中正在使用的镜像,并对 namespace 进行一个简单的统计。使用这个插件可以非常方面的查看 namespace 中使用了哪些镜像,尤其在排查问题需要查看镜像版本时非常有用。


项目地址:https://github.com/chenjiandongx/kubectl-images


安装

$ kubectl krew install images$ kubectl images --help
复制代码

示例

kubectl-images


结语


有了 plugin 的加持,可以轻松为 kubectl 打造出一整套适合自己操作习惯的工具体系。如果这些插件都不符合要求,大可以自己开发一款插件,这样做可以大大提升工作效率,将自己从重复的劳动中解放出来!这也是笔者不常加班的原因之一。



发布于: 2021 年 03 月 05 日阅读数: 11
用户头像

郭旭东

关注

服务可靠无异常,节点稳定不宕机 2018.09.08 加入

柴猫双全的码农

评论

发布
暂无评论
Kubectl Plugin 推荐(一)| 可观测性篇