每次都是写完成的K8S命令操作,比较繁锁,就写了一个小小的工具(注:要使用该工具,需要先在本地配置好阿里云的K8S配置,并且该工具需要在Linux的环境化使用)简化了操作,操作如下:
完整的Shell脚本如下:
#!/bin/bash
#功能说明:根据输入的应用名称,直接进入到其对应的K8S Docker容器中
#设备要访问环境的namespace,该值必须配置
namespace="你要操作的的namespace"
if [ "$namespace" == "" ]; then
echo "namespace必须配置."
exit -1
fi
#参数
#应用名称,可以是部分名称,该参数是必传参数
app_name=$1
#要打开的应用的第几个节点
app_pod_index=$2
#判断应用是否有输入
if [ "$app_name" == "" ]; then
echo -e "\n应用名称没有输入,使用方法为:"
echo "k8s_into_app.sh [(必填)应用名称] [(可选,默认为1)应用的第几个POD(值为1,2,3...)]"
echo -e "可以查看以下全部的应用列表:\n"
kubectl get pods --namespace $namespace
exit -1;
fi
#判断要打开的pod的是第几个,值是1,2,3之类的,如果没有输入,则默认为第一个pod
if [ "$app_pod_index" == "" ]; then
app_pod_index=1
fi
kubectl get pods --namespace $namespace | grep $app_name
app_name_str=`kubectl get pods --namespace $namespace | grep $app_name|awk -F ' ' '{print $1}'`
if [ "" == "$app_name_str" ]; then
echo -e "\n根据输入的应用名称$app_name,找不到对应的名称,可以查看以下全部的应用列表:\n"
kubectl get pods --namespace $namespace
exit -1
fi
#获取POD的名称i
pod_name=""
pod_index=0
OLD_IFS="$IFS"
IFS=" "
pod_name_arr=($app_name_str)
IFS="$OLD_IFS"
for s in ${pod_name_arr[@]}
do
pod_index=$(expr $pod_index + 1 )
if [ $pod_index -eq $app_pod_index ]; then
pod_name=$s
fi
done
#获取应用名称
container_name=""
container_index=0
OLD_IFS="$IFS"
IFS="-"
container_name_arr=($pod_name)
IFS="$OLD_IFS"
for s in ${container_name_arr[@]}
do
container_index=$(expr $container_index + 1 )
done
container_index=$(expr $container_index - 2 )
container_name=`echo $pod_name|cut -d "-" -f1-$container_index`
echo -e "\n进入POD名为$pod_name、容器名为$container_name的K8S Docker容器中:\n"
kubectl exec -it --namespace $namespace $pod_name -c $container_name -- bash