Kubernetes: остановите контейнер CloudsQL-proxy sidecar в мультиконтейнере Pod/Job
У меня есть Kubernetes JOB
, который выполняет миграцию базы данных в базе данных CloudSQL.
Один из способов доступа к базе данных CloudSQL от GKE - использовать контейнер CloudSQL-proxy, а затем подключиться через localhost
. Отлично - это работает до сих пор. Но поскольку я делаю это внутри K8s JOB
, задание не помечено как успешно законченное, так как прокси-сервер продолжает работать.
$ kubectrl get po
NAME READY STATUS RESTARTS AGE
db-migrations-c1a547 1/2 Completed 0 1m
Несмотря на то, что на выходе указано "завершено", один из двух первоначально запущенных контейнеров - прокси.
Как я могу сделать прокси-выход при завершении миграции внутри контейнера 1?
Ответы
Ответ 1
Одним из возможных решений могло бы стать отдельное развертывание cloudql-прокси с соответствующей услугой. Тогда вам понадобится только ваш контейнер миграции внутри задания, которое подключается к вашей службе прокси.
Это связано с некоторыми недостатками:
- более высокая сетевая латентность, без связи с локальной связью mysql
- Возможная проблема с безопасностью, если вы предоставляете sql-порт всему кластеру кубернетов
Если вы хотите открыть cloudql-proxy для всего кластера, вы должны заменить tcp:3306
на tcp:0.0.0.0:3306
в параметре -instance
на cloudql-прокси.
Ответ 2
Не похоже, что Kubernetes может сделать это в одиночку, вам нужно будет вручную убить прокси-сервер после выхода миграции. Аналогичный вопрос задан здесь: Контейнеры Sidecar в Kubernetes Jobs?
Ответ 3
Возможным решением было бы установить concurrencyPolicy: Replace
в spec
задания... это будет агностически заменять текущий модуль новым экземпляром всякий раз, когда ему нужно будет запустить снова. Но вы должны убедиться, что последующие циклы cron достаточно разделены.
Ответ 4
Google cloud sql недавно запустил подключение к частному IP-адресу для cloudsql. Если экземпляр облачного SQL и кластер kubernetes находятся в одном регионе, вы можете подключиться к cloudql без использования облачного SQL-прокси.
Ответ 5
Оформить заказ в этом блоге - Как завершить контейнер с коляской в Куберне