Ejecute kubectl exec en la línea de comando del nodo del nodo y ejecute el comando en el contenedor de pod correspondiente

Ejecute kubectl exec en la línea de comando del nodo del nodo y ejecute el comando en el contenedor de pod correspondiente

# kubectl exec -it <podName> -c <containerName> -n <namespace> -- shell comand

Por ejemplo, creamos un archivo de prueba en el contenedor de pod:

# kubectl exec -it <podname> -c <container name> -n <namespace> -- touch /usr/local/testfile

Antes del comando de shell, debe agregar el signo -; de lo contrario, los parámetros de shell no se pueden reconocer.

Guión modificado

#!/bin/bash
 
print_help() {
    
    
    echo "USAGE: $0 -e <ENV>"
    echo "OPTIONS: "
    echo "-e : which env cache you want to clear(required): dev, stg, preview, prd"
    echo "-h : help"
    exit -1
}
 
while getopts ":e:h" opt; do
    case $opt in
        e)  ENV="$OPTARG"
            ;;
        h)  print_help
            ;;
        \?) echo "Option -$OPTARG is not recognized." >&2
            print_help
            ;;
        :)  echo "Option -$OPTARG requires an argument." >&2
            print_help
            ;;
    esac
done
 
if [ -z ${ENV} ]; then
    echo "ENV is required."
    print_help
fi
 
result=`kubectl get pods -o=name -n j7v126xg-vip-${
     
     ENV} | sed "s/^.\{5\}//"`
 
pods=($result)
for pod in ${pods[@]}; do
  if [[ $pod == vip-nginx-* ]]; then
     echo the pod name is $pod
     if kubectl exec -it $pod -c vip-nginx -n j7v126xg-vip-${ENV} -- rm -rf /tmp/nginx-cache; then
        echo cache clear successfully
     fi
  fi

Ejecutar script

# ./1.sh -e preview

Supongo que te gusta

Origin blog.csdn.net/yjk13703623757/article/details/108452784
Recomendado
Clasificación