Масштабирование стручков Кубернетеса
я использую
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