善用搜索

一个快速进入pod中容器的shell脚本教程

#!/bin/bash

# define log & color
readonly FG_GREY="30"             #灰色
readonly FG_RED="31"
readonly FG_GREEN="32"
readonly FG_YELLOW="33"
readonly FG_BLUE="34"          #前景色蓝色
readonly FG_VIOLET="35"        #紫色
readonly FG_SKY_BLUE="36"
readonly FG_WHITE="37"

readonly BG_RED="41"
readonly BG_GREEN="42"
readonly BG_YELLOW="43"
readonly BG_BLUE="44"
readonly BG_VIOLET="45"
readonly BG_SKYBLUE="46"
readonly BG_WHITE="47"

readonly LOG_DEBUG="[调试]"
readonly LOG_INFO="[信息]"
readonly LOG_WARN="[警告]"
readonly LOG_ERROR="[错误]"

function debug()
{
    echo -e "\033[${FG_WHITE}m${LOG_DEBUG}\033[0m $1"
}
function info(){
    echo -e "\033[${FG_GREEN}m${LOG_INFO}\033[0m $1"
}
function warn()
{
    echo -e "\033[${FG_YELLOW}m${LOG_WARN}\033[0m $1"
}
function error()
{
    echo -e "\033[${FG_RED}m${LOG_ERROR}\033[0m $1"
}
function coloredLog()
{
    echo -e "\033[$1;$2m $3\033[0m"
}


function chooseContext() {
    kubectl config get-contexts
#    for context in ${contexts}
#    do
#        echo "${context}"
#    done
    echo -n "choose one: "
    read inputContext
    if [ "tx" = ${inputContext} ];then
        inputContext="context-tx"
    fi

    if [ "pre" = ${inputContext} ];then
        inputContext="context-pre"
    fi

    if [ "dc1" = ${inputContext} ];then
        inputContext="context-dc1"
    fi
    if [ "prd" = ${inputContext} ];then
        inputContext="context-prd"
    fi
    chooseContextResult=$(kubectl config use-context ${inputContext})
    info "${chooseContextResult}"
}

function chooseResource() {
    echo -n "input resource name: "
    read inputResource
    echo -n "input namespace: "
    read inputNamespace
    kubectl get ${inputResource} -n ${inputNamespace}
}

function intoDocker() {
    echo -n "choose namespace: "
    read inputNamespace
    info "切换到命名空间: ${inputNamespace}..."
    echo -n "input container name: "
    read containerName
    pods=($(kubectl get pod -n ${inputNamespace} |grep ${containerName}|awk '{print $1}'))
    info "正在查找pod列表..."
    num=0
    for pod in ${pods[@]}
    do
        echo "${num}: ${pod}"
        let num++
    done
    echo -n "choose a pod: "
    read podNum
    info "正在执行命令:kubectl exec -it -n ${inputNamespace} ${pods[podNum]} --container ${containerName} /bin/bash"
    kubectl exec -it -n ${inputNamespace} ${pods[podNum]} --container ${containerName} /bin/bash
}


# config env
info "正在设置环境变量..."
source ~/.bash_profile

info "正在查找集群..."
chooseContext

#info "正在收集资源..."
#chooseResource

intoDocker








#kubectl config use-context context-pre
#
#podName=$(kubectl get pod -n edu |grep edu-dating |awk '{print $1}')
#
#echo "edu-dating podName:${podName}"
#
#kubectl exec -it -n edu ${podName} --container edu-dating /bin/bash
#
#globalContext=default



# print context

log="this is a log string"

BOLD="01"             #加粗
UNDERLINE="04"        #下划线
BLINK="05"            #闪烁

发表评论
退出移动版