参数命名_kubectl 高效技巧: 省略并自动复用上一次使用的命名空间参数

是否有过因为使用 kubectl 经常需要重复输入命名空间而苦恼?是否觉得应该要有个记住命名空间的功能,自动记住上次使用的命名空间,不需要每次都输入?可惜没有这种功能,但是,本文会教你一个非常巧妙的方法完美帮你解决这个痛点。

k 命令

将如下脚本粘贴到当前shell(注册k命令到当前终端session):

function k() {    cmdline=`HISTTIMEFORMAT="" history | awk '$2 == "kubectl" && (/-n/ || /--namespace/) {for(i=2;i<=NF;i++)printf("%s ",$i);print ""}' | tail -n 1`    regs=('\-n [\w\-\d]+' '\-n=[\w\-\d]+' '\-\-namespace [\w\-\d]+' '\-\-namespace=[\w\-\d]+')    for i in "${!regs[@]}"; do        reg=${regs[i]}        nsarg=`echo $cmdline | grep -o -P "$reg"`        if [[ "$nsarg" == "" ]]; then            continue        fi        cmd="kubectl $nsarg $@"        echo "$cmd"        $cmd        return    done    cmd="kubectl $@"    echo "$cmd"    $cmd}

mac 用户可以使用 dash 的 snippets 功能快速将上面的函数粘贴,使用 kk. 作为触发键 (dash snippets可以全局监听键盘输入,使用指定的输入作为触发而展开配置的内容,相当于是全局代码片段),以后在某个终端想使用 k 的时候按下 kk. 就可以将 k 命令注册到当前终端,dash snippets 配置如图所示:

4932de5b920f84110e9e2ee866f669fe.png

然后使用 k 替代 kubectl,它会调用 kubectl 并自动加上上次使用的非默认的命名空间,下面是示范:

92d32d2cb9d35a712c14bfd51167ee84.png

哈哈,是否感觉可以少输入很多字符,提高 kubectl 使用效率了?这是目前我探索解决 kubectl 重复输入命名空间的最好方案,一开始是受 fuck命令 的启发,想用 go 语言开发个 k 命令,但是发现两个缺点:

  • 需要安装二进制才可以使用(对于需要在多个地方用kubectl管理多个集群的人来说实在太麻烦)

  • 如果当前 shell 默认没有将历史输入记录到 history 文件( bash 的 history 文件默认是 ~/.bash_history),那么将无法准确知道上一次 kubectl 使用的哪个命名空间

这里解释下第二个缺点的原因:ssh 连上服务器会启动一个 shell 进程,通常是 bash,大多 bash 默认配置会实时将历史输入追加到 ~/.bash_history里,所以开多个ssh使用history命令看到的历史输入是一样的,但有些默认不会实时记录历史到~/.bash_history,而是记在当前 shell 进程的内存中,在 shell 退出时才会写入到文件。这种情况新起的进程是无法知道当前 shell 的最近历史输入的,fuck命令 也不例外。

所以最完美的解决方案就是注册函数到当前shell来调用,配合 dash 的 snippets 功能可以实现快速注册,解决复制粘贴的麻烦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值