littleTools是我根据平常运维时编写的一个小工具,开源在了https://github.com/xuxinkun/littleTools上。node
littleTools包含一组简短命令,主要用于简化某些命令的输入。目前littleTools有docker-tools和kube-tools两部分,主要用于简化命令docker和kubectl的输入。例如,若是要进入容器,通常须要输入命令docker exec -it xxx bash
来完成。可是使用littleTools,只需使用dt-exec xxx
就能够实现它。git
littleTools主要是为简化命令而作,所以直接采用了最简便直接的shell函数进行编写,所以tab键能够帮助用户自动完成命令。github
好比想要实现dt-exec {containerid}
,则只须要获取参数,填充到docker exec -it {containerid} bash
的命令中便可。两者效果彻底一致。docker
function dt-exec() { docker exec -it $1 bash }
在函数的命名上采用了如下几种方式:shell
主要用以简化docker的相关命令。bash
命令 | 参数 | 描述 |
---|---|---|
dt-exec | {containerid} | 用bash执行到容器中。 |
dt-exec-sh | {containerid} | 用sh执行到容器中。 |
dt-show-pid | {containerid} | 显示容器的0号进程在主机上的pid。 |
dt-show-pid-all | {containerid} | 显示容器的全部进程的pids。 |
dt-show-flavor | {containerid} | 显示容器的cpu / memory等资源信息。 |
dt-show-flavor-all | 没有 | 显示全部容器的cpu / memory之类的资源信息。 |
dt-show-volume | {containerid} | 显示容器绑定的在主机上的存储路径。 |
dt-show-volume-all | {containerid} | 显示容器绑定的在主机上的存储路径以及在容器中绑定的路径。 |
dt-lookup-by-pid | {pid} | 根据主机上的{pid}查找包含该进程的容器。 |
dt-lookup-by-volume | {volume path} | 根据主机上的{volume path}的路径查找绑定该路径的容器。 |
这里特别要说明的是dt-lookup-by-pid
命令,能够执行根据主机上的某个进程pid号查找对应容器的功能,这个在实际运维中很是实用。
其工做原理是利用了容器中全部进程会使用相同的cgroup path。经过查看该进程的cgroup信息。然后遍历容器的cgroup信息,并进行比对,若是一致,说明该进程属于该容器。运维
主要用以简化kubectl的相关命令。函数
命令 | 参数 | 描述 |
---|---|---|
kt-exec | {pod name}或{namespace} {pod name} | 用bash执行进入pod。 |
kt-exec-sh | {pod name}或{namespace} {pod name} | 用sh执行进入pod。 |
kt-get-node | {node name} | 描述节点。 |
kt-get-node-ready | 没有 | 列出全部ready节点。 |
kt-get-node-notready | 没有 | 列出全部notready的节点。 |
kt-get-node-all | 没有 | 列出全部节点。 |
kt-get-pod | {pod name}或{namespace} {pod name} | 描述pod。 |
kt-get-pod-node | {pod name}或{namespace} {pod name} | 使用pod获取pod和节点信息。 |
kt-get-pod-all | 没有 | 获取全部命名空间的全部pod。 |
kt-get-pod-by-ns | {namespace} | 获取命名空间中的全部pod。 |
kt-get-pod-by-rs | {rs name}或{namespace} {rs name} | 获取rs的全部pod。 |
kt-get-pod-by-deploy | {deploy name}或{namespace} {deploy name} | 获取deploy的全部pod。 |
kt-get-pod-by-svc | {svc name}或{namespace} {svc name} | 获取svc的全部pod。 |
样例这里就不重复列举了,能够参考项目的examples.md。工具