Эта проблема на самом деле не специфична для kubernetes, она возникает в любой системе с более чем одним сервером - kubernetes просто делает ее более передней и центральной из-за того, как происходит автоматическое переключение.Слова «тесно связанные» в вашем вопросе являются полной ошибкой проблемы real здесь.
При этом «ответ» на самом деле будет зависеть от того, какая из следующих ментальных моделей лучшедля вашей команды:
- не допускайте противоречия между двумя последовательными схемами
- используйте страницу «обслуживания», которая удерживает трафик от пакетов, пока они не будут полностью развернуты
- просто примите
SQLException
s и добавьте лучшую логику повторения для потребителей
Мы используем первый, потому что развертывание kubernetes запекается в нашей инженерной культуре, и мы знаем что pod-old и pod-new будут работать одновременно, и поэтому изменения схемы должны быть инкрементными и обратно совместимыми как минимум для одного поколения pods.
Однако иногда мы просто соглашаемся, что инженерные усилия для этогоЭто дороже, чем 500-х годов, что определенное критическое изменение повлечет за собой, поэтому мы обманываем и масштабируем реплики на низком уровне, а затем развертываем и предупреждаемнаша команда мониторинга, что будут исключения, но они перевернутся.Мы можем сделать это частично, потому что в клиент встроена логика повторения.