alias简化k8s命令,节约生命

日常运维中,我经常用到k8s命令,每次输入kubectl -nmynamespace get pod -o wide | grep xxx,很费时间。浪费时间等于浪费生命,所以总结了一些日常用的command,整成alias。如下,供大家参考。

#kubectl命令
alias k8s='kubectl'

#常用namespace访问。注意yournm要改成你的namespace
alias k8snm='kubectl -nyournm'

#查找指定名称的pod,用法:kbp your-pode-name
alias kbp='_f(){ k8snm get pod -o wide| grep $1; }; _f'

#查看指定pod最新日志,用法:kbl your-pode-full-name
alias kbl='_f(){ k8snm logs -f --tail=10 $1; }; _f'

#describe你的pod,用法:kdescp your-pode-full-name
alias kdescp='_f(){ k8snm describe pod $1; }; _f'

#进入指定的pod命令行,用法:kbi your-pode-full-name
alias kbi='_f(){ 
	k8snm exec -it $1 -- /bin/bash; 
	if [ $? -ne 0 ] ;then
		k8snm exec -it $1 -- /bin/sh;
	else
		echo "Error";
	fi
	}; _f'

#多个满足条件pod,指定pod日志输出。用法:kblp your-pode-name
alias kblp='_f() {
        rows=$2
        if [ x$rows == x ] ;then
          rows=50
        fi
        echo "last lines: "$rows 
        pods=$(k8snm get pod|grep $1)
        idx=0
        pod_name_arr=()
        for d in ${pods[@]}
        do
          if [ $(($idx % 5)) = 0 ]; then
            pod_name_arr+=($d)
          fi
          idx=$((idx+1))
        done
        pods_num=${#pod_name_arr[@]}
        echo $pods_num
        if [ $pods_num -eq 1 ]
        then
          pod=${pod_name_arr[0]};
          echo $pod;
          sleep 1
          k8snm logs -f --timestamps --tail=$rows $pod
        else
          echo -e "\033[31mPlease choose a pod:\033[0m"
          idx=0
          for p in ${pod_name_arr[@]}
          do
            echo $idx":"$p 
            idx=$((idx+1))
         done
         read cpod_num
         echo "you choose:"
         pod=${pod_name_arr[$cpod_num]}
         echo $pod
         sleep 1
         k8snm logs -f --timestamps --tail=$rows $pod
        fi
 }; _f'
 
#阿里开源arthas访问pod,用法:arthas your-pode-full-name
alias arthas='_f(){ 
	k8snm exec -it $1 -- test -e arthas-boot.jar; 
	if [ $? -eq 0 ] ;then 
		k8snm exec -it $1 --  java -jar arthas-boot.jar; 
	else 
		k8snm exec -it $1 -- /bin/bash -c "wget https://arthas.gitee.io/arthas-boot.jar && java -jar arthas-boot.jar";
	fi
	}; _f'

将上面alias命令写入/etc/profile,然后source /etc/profile,即可享受alias带来的生命节约。

理论上,所有复杂的指令,都可以通过alias实现简写。

alias fname='_f(){ your commands here }; _f'
Logo

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

更多推荐