现状

使用kubectl管理k8s集群很爽,但是kubectl的命令却很长,如果管理多个集群,需要带上kubeconfig文件的路径,再加上namespace,如果是exec的话,那么命令恐怕一行都装不下了。

思路

那么自然而然的就想到使用alias来缩短命令。希望实现:
alias kclxx=kubectl --kubeconfig=/kubeconfig/path --namespace=
这里希望把ns作为一个参数传入alias,有了这个alias,就可以直接传入ns,使用kclxx ns get po来查看对应集群、对应ns的pod了,其他命令以此类推。

问题

But,凡事都有但是,alias不支持参数,我估计alias就相当于c中的#define,属于直接文本替换,所以自然没办法支持参数了,所以想传入ns的想法破灭了。

解决方案

所以就只能使用函数了:
kcljxq='_a(){kubectl --kubeconfig=/Users/zhenggui/.kube/config-xxx --namespace=38-$*}; _a
说明一下,这里定义了一个alias,内容为一个名为a的函数,在这个函数中直接执行命令,同时将参数用$*的方式拼接到命令最后,大功告成!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐