Kubernetes常用工具
很多時侯透過kubectl已經可以很好的管理你的k8s clusters,
但有些時侯使用一些第三方的軟體可以進一步的增加工作效率。
以下就介紹一些我常用的k8s小工具。
k9s
k9s 是一個免於cluster上安裝的CLI 介面,讓你可以快速地瀏覽/管理各種資源。

不同於k8s dashboard,k9s所有功能都是基於客戶側的kubectl來實裝,因此不需要額外的權限及port-forward/expose等等的問題。
例如你想要瀏覽default namespace 上的所有pods,只要在界面上輸入:pods default就會列出所有pods,並且會每兩秒refresh一次。
你也可以透過一些hot keys來filter/sort,例如shift + a就會跟據創建時間來排序,等同於kubectl get pods -n default --sort-by=.status.startTime。
k9s實裝了kubectl的大部份基本功能,我差不多90%的日常操作都可以透過k9s來完成,剩下的通常都是需要--field-selector或者要透過shell script才可達成的操作才會用到kubectl。
此外唯一的問題是通你的cluster規模比較大的時侯k9s的效能會下降的比較明顯,大概在>500nodes的時侯很明顯會感覺出來,但我相信可以透過一定配置來進行優化。
kubectx/kubens
當你要管理多於一個k8s cluster的時侯就需要用到kubectl config set-context來切換配置,但這需要你提供context的名字。
kubectx 就解決了這個煩惱。 他是一個很簡單的cli,讓你可以快速的瀏覽/切換當切的kube context,
而另外的kubens則讓你可以快速切換預設的namespace,當你需要頻煩地操作同一個namespace時非常方便。
Kubeconfig
大部份的雲端K8S工具都預設kubeconfig為~/.kube/config,每當你新增一個cluster時會把配置寫到這個檔案裡。
而當你有多個cluster後這個config檔會變得相當擁踵。我個人的解決方法是每個cluster的配置都會寫到一個獨立的.config檔,
然後有一個shell function去讀取所有的.config檔路徑並加到環境變數KUBECONFIG去。
# Load all config files with ext .config at ~/.kube/
load_kubeconfigs () {
KUBECONFIG_DIR="/Users/$(whoami)/.kube"
for config in "$KUBECONFIG_DIR"/*.config ;
do
[ -f "$config" ] || break
export KUBECONFIG="$KUBECONFIG:$config"
done
}