1. 程式人生 > 其它 >一個操作阿里雲K8S容器的簡易命令

一個操作阿里雲K8S容器的簡易命令

技術標籤:Linuxlinuxshellk8skubectl

每次都是寫完成的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