Масштабирование стручков Кубернетеса

я использую

kubectl scale --replicas=0 -f deployment.yaml

чтобы остановить все мои запущенные стручки. Пожалуйста, дайте мне знать, есть ли более эффективные способы сбить все запущенные контейнеры в Zero, сохраняя конфигурацию, развертывания и т.д. Неповрежденными, чтобы я мог масштабироваться позже по мере необходимости.

Ответ 1

Вы делаете правильное действие; традиционно scale глагол применяется только к имени ресурса, так как в kubectl scale deploy my-awesome-deployment --replicas=0, что устраняет необходимость всегда указывать на конкретный файл, описывающий это развертывание, но нет ничего плохого (что Я знаю) с использованием файла, если это более удобно для вас.

Ответ 2

Вот так. Уменьшает все развертывания в целом пространстве имен:

kubectl get deploy -n <namespace> -o name | xargs -I % kubectl scale % --replicas=0 -n <namespace>

Для увеличения установите --replicas=1 (или любое другое требуемое число) соответственно

Ответ 3

Если вы хотите общий патч:

namespace=devops-ci-dev
kubectl get deployment -n ${namespace} --no-headers| awk '{print $1}' | xargs -I elhay kubectl patch deployment -n ${namespace} -p '{"spec": {"replicas": 1}}' elhay 

Измените namespace=devops-ci-dev, чтобы оно стало вашим пространством имен.

Ответ 4

Если вам нужно больше детализации с pipeми или grep, вот другое решение оболочки:

for i in $(kubectl get deployments | grep -v NAME | grep -v app | awk '{print $1}'); do kubectl scale --replicas=2 deploy $i; done