使用 kubectl 命令时,最烦人的就是频繁的切换命名空间了,查看什么资源都得加命名空间,每次敲命令在习惯也会很烦。今天在网上看到一篇文章,很有用,可以记住上一次使用 kubectl 时操作的命名空间。

代码如下:

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
}

可以将此代码放入 .bashrc 或者其它的开机自启文件中(永久生效)。建议在使用时直接复制到命令行执行(即临时生效)

使用方法如下:

使用 kubectl -n xxx 之后,-n 会被记住,然后直接使用 k get xxx 不需要加 -n,即可,下次切换命名空间时,还是使用 kubectl -n xxx

$ kubectl get pods -n nginx 
NAME                               READY   STATUS    RESTARTS   AGE
nginx-deployment-c94f957b8-4t4f8   1/1     Running   3          35d
nginx-deployment-c94f957b8-gj4j7   1/1     Running   3          35d
$ k get pods 
kubectl -n nginx get pods
NAME                               READY   STATUS    RESTARTS   AGE
nginx-deployment-c94f957b8-4t4f8   1/1     Running   3          35d
nginx-deployment-c94f957b8-gj4j7   1/1     Running   3          35d
$ k get svc
kubectl -n nginx get svc
NAME        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
nginx-svc   ClusterIP   10.105.99.220   <none>        8080/TCP   43d
$ k get ingress
kubectl -n nginx get ingress
NAME           CLASS    HOSTS                 ADDRESS          PORTS     AGE
test-ingress   <none>   feiyi.yanjiang.chai   172.16.182.193   80, 443   38d
$ kubectl get pods -n istio-system 
NAME                                    READY   STATUS    RESTARTS   AGE
istio-ingressgateway-76bdc8cbf6-4lzmb   1/1     Running   0          4d
istio-tracing-8549b858b6-ztvwh          1/1     Running   0          3d23h
istiod-1-6-10-5789bdcb9f-jp5ng          1/1     Running   0          4d
kiali-655dd5cfdc-c4hxd                  1/1     Running   0          3d23h
$ k get pods
kubectl -n istio-system get pods
NAME                                    READY   STATUS    RESTARTS   AGE
istio-ingressgateway-76bdc8cbf6-4lzmb   1/1     Running   0          4d
istio-tracing-8549b858b6-ztvwh          1/1     Running   0          3d23h
istiod-1-6-10-5789bdcb9f-jp5ng          1/1     Running   0          4d
kiali-655dd5cfdc-c4hxd                  1/1     Running   0          3d23h

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0