0. 简介
文本介绍一个我个人开发的一个kubectl插件供大家参考与学习;kubectl 插件它其实是一个独立的执行文件,并不是对kubectl 进行二开操作。官方有一个很简单的例子介绍了什么是 kubectl 插件这里就不再叙述;
1. 项目(kube-query)
我个人是从事运维产品研发的相关工作所以接触k8s比较多,但总觉得k8s命令和概念非常多难以记忆和开放,所以一直想 简化、统一 和 开放 k8s的基本操作(起码运维用起来简单点);之后接触到了kubectl 插件这个概念,我便萌生出一个想法可以开发个交互终端,进行命令或资源提示、开放的命令记录(类似堡垒机)、可以使用clinet-go 进行命令的简化或展示的简化、以及自定义权限的控制;
1.1 项目演示
项目地址: github.com/Shadow-linu…
- 当前项目只是一个简单的雏形,但完全可以按照自己的想法去实现和开放k8s操作到业务部门去;
1.2 安装
Downloading standalone binary
Binaries are available from (github release).
-
macOS (darwin) - amd64
wget https://github.com/Shadow-linux/kube-query/releases/download/v1.0.0/kube-query_v1.0.0_darwin_amd64.zip unzip kube-query_v1.0.0_darwin_amd64.zip chmod +x kube-query.darwin-amd64 sudo mv bin/kube-query.darwin-amd64 /usr/local/bin/kube-query
-
Linux - amd64
wget https://github.com/Shadow-linux/kube-query/releases/download/v1.0.0/kube-query_v1.0.0_linux_amd64.zip unzip kube-query_v1.0.0_linux_amd64.zip chmod +x kube-query.linux-amd64 sudo mv bin/kube-query.linux-amd64 /usr/local/bin/kube-query
-
Source code
# install go version 1.17+ first. wget https://github.com/Shadow-linux/kube-query.git cd kube-query make build mv bin/kube-query /usr/local/bin/kube-query
1.3 用法
这里只列举了一部分的用法,更多的请跳转至项目源地址: github.com/Shadow-linu…
- config your kubeconfig
export KUBECONFIG=~/.kube/config
Start way
-
use in kubectl
mv /usr/local/bin/kube-query /usr/local/bin/kubectl-query kubectl query [--debug]
-
standalone
./kube-query [--debug]
Basic Command
-
Clear console
kube-query ~ > clear
-
Show help info for
kube-query
andkubectl
native command.kube-query ~ > help
-
Set global namespace
kube-query ~ > use default Set namespace default kube-query ~ > use kube-system Set namespace kube-system # all namespace can not use in native kubectl command. # set namespace all is not safety operation. kube-query ~ > use all Set namespace all
-
Run
shell
command. We can easier auto complete the file path, when you input a word start with/
or./
.kube-query ~ > @ ls /tmp;
-
Close console.
# exit | quit | ctrl + D kube-query ~ > exit
Resource command
resource format: ResourceName.Namespace,
-
Output mode.
kube-query ~ > pods jtthink-ngx-8669b5c9d-xwljg.default [-o desc] kube-query ~ > pods jtthink-ngx-8669b5c9d-xwljg.default -o [yaml|desc|json]
-
Show labels
kube-query ~ > pods jtthink-ngx-8669b5c9d-xwljg.default -l Labels: app=jtthink-ngx pod-template-hash=8669b5c9d
-
Show events
kube-query ~ > pods jtthink-ngx-8669b5c9d-xwljg.default -e Events: TYPE REASON MESSAGE
-
Show relationship
kube-query ~ > pods jtthink-ngx-8669b5c9d-xwljg.default -r Relevant relationship: ##### Service ##### NAME TYPE CLUSTER-IP EXTERNAL-IP PORTS jtthink-ngx-svc ClusterIP 10.99.226.31 38080/TCP jtthink-ngx-svc-1 NodePort 10.99.47.202 81:30080/TCP ##### ReplicaSet ##### NAME DESIRED CURRENT READY jtthink-ngx-8669b5c9d 1 1 1 ##### Deployment ##### NAME READY UP-TO-DATE AVAILABLE jtthink-ngx 1/1 1 1
-
Connect to container
# connect specify container name and shell. kube-query ~ > pods jtthink-ngx-8669b5c9d-xwljg.default -i jt-nginx -s /bin/sh Connect to container: jtthink-ngx-8669b5c9d-xwljg.jt-nginx Commannd: /bin/sh / # exit Connection closed. # connect default container. kube-query ~ > pods jtthink-ngx-8669b5c9d-xwljg.default -i Connect to container: jtthink-ngx-8669b5c9d-xwljg. Commannd: sh / # exit Connection closed.
-
Use
grep
command to filter info;kube-query ~ > pods jtthink-ngx-8669b5c9d-xwljg.default -l |grep -A 1 -i labels Labels: app=jtthink-ngx
2. 写在最后
我热爱 云原生 和 自动化运维 同时也希望能做出依赖于云(k8s)为基础的自动化云运维相关的原生产品,包括资源管理、监控、任务管理 、ServiceMesh 和 网络管理 等等;因为k8s其实已经提供了一套很好的运维标准,无论是否是k8s的机器都应该纳入进来管理(如同在一个机器上安装agent而已),如果你也有这样的想法可以和我多多交流与讨论。