Для переноса определенных ресурсов в другую зону доступности необходимо выполнить следующие действия:
Создаем файл patch.yaml, в котором описываем параметры, которые мы будем патчить.
Файл patch.yaml:
spec:
template:
spec:
nodeSelector:
topology.kubernetes.io/zone: ru-central1-d
В данном случае указываем nodeSelector с указанием лейбла ноды topology.kubernetes.io/zone и соответствующей зоны, куда нужно выполнить перенос.
Далее выполняем команду:
kubectl get deployments --no-headers | awk '{print $1}' | xargs kubectl patch deployment --patch "$(cat patch.yaml)"
Данная команда выберет все деплойменты в неймспейсе текущего контекста KUBECONFIG и пропатчит их в соответствии с файлом patch.yaml. Если необходимо пропатчить StatefulSet, то указываем sts, вместо deployments в команде.