Пишем скрипт рестарта подов для openshift

0
(0)

Порой нужно выполнить вот прям рестарт целого namespace в openshift или кубере.

Из таких потребностей и родился простой скрипт на bash. Комментарии как всегда в коде)

Bash
#!/bin/bash
# вторым аргументом передаем имя неймспейса
ns=$2

start() {
   # Переходим в проект (неймспейс)
    oc project $ns
    # Создаем текстовый файл для хранения реплик
    replica="dcReplica-${ns}.txt"
    # Читаем построчно файл и скейлим поды согласно нему в фоне
    while read line;do
        dcName=$(echo ${line}|awk '{print $1}')
        replica=$(echo ${line}|awk '{print $2}')
        (oc scale dc $dcName --replicas=$replica)&
    done < "${replica}"
    wait
}
stop() {
    # Тут все тоже самое, только скейлим поды в 0 и создаем файл с их исходным состоянием
    oc project $ns
    oc get dc |awk '{print $1,$3}' > dcReplica-${ns}.txt
    for i in $(oc get dc | awk '{printf "%s",$1; printf ";%s",$3; print ""}' );do
        dc_name=$(echo $i | awk -F';' '{print $1}')
        dc_repl=$(echo $i | awk -F';' '{print $2}')
        (oc scale dc $dc_name --replicas=0)&
    done
    wait
}
case $1 in
        start|stop|stop_all) $1;;
        restart) stop; start;;
        *) echo "Usage: $0 <start|stop|restart>"; exit 1;;
esac

Собственно для k8s достаточно заменить команду oc на kubectl с некоторыми правками. Например в k8s мы не можем залочиться в namespace или использовать сокращение dc (DeployomentConfig) для скейлинга, так как такой сущности просто не в k8s.

Вот пример того же скрипта, но для kubernetes.

Bash
#!/bin/bash
# вторым аргументом передаем имя неймспейса
ns=$2

start() {
    # Создаем текстовый файл для хранения реплик
    replica="dcReplica-${ns}.txt"
    # Читаем построчно файл и скейлим поды согласно нему в фоне
    while read line;do
        dcName=$(echo ${line}|awk '{print $1}')
        replica=$(echo ${line}|awk '{print $2}')
        (kubectl scale deploy $dcName --replicas=$replica)&
    done < "${replica}"
    wait
}
stop() {
    # Тут все тоже самое, только скейлим поды в 0 и создаем файл с их исходным состоянием
    kubectl get deploy |awk '{print $1,$3}' > dcReplica-${ns}.txt
    for i in $(kubectl get deploy | awk '{printf "%s",$1; printf ";%s",$3; print ""}' );do
        dc_name=$(echo $i | awk -F';' '{print $1}')
        dc_repl=$(echo $i | awk -F';' '{print $2}')
        (kubectl scale deploy $dc_name --replicas=0)&
    done
    wait
}
case $1 in
        start|stop|stop_all) $1;;
        restart) stop; start;;
        *) echo "Usage: $0 <start|stop|restart>"; exit 1;;
esac

Насколько статья полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Оставить комментарий