使用littleTools簡化docker/kubectl的命令

littleTools

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

  • dt/kt-verb: 執行某個動做
  • dt/kt-verb-resource: 顯示resource的相關信息
  • dt/kt-verb-resourceA-by-resourceB: 根據resourceB獲取resourceA

命令一覽表

docker-tools

主要用以簡化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信息,並進行比對,若是一致,說明該進程屬於該容器。運維

kube-tools

主要用以簡化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工具

相關文章
相關標籤/搜索