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。工具