Невозможно подключиться к CloudSQL из GKE без CloudSQL Proxy - SQLSTATE[HY000] [2002] Время ожидания операции истекло

Невозможно подключиться к CloudSQL из GKE без CloudSQL Proxy - SQLSTATE[HY000] [2002] Время ожидания операции истекло

У меня есть кластер GKE, созданный с помощью следующей команды:

gcloud container clusters create stage1 \
--enable-ip-alias \
--release-channel stable \
--zone us-central1 \
--node-locations us-central1-a,us-central1-b

Теперь я хотел подключить свое PHP-приложение к облачному SQL. Чтобы разрешить доступ к облачному SQL из PHP-приложения, запущенного в pod, я выполнил следующие шаги

  • Создал секрет
    kubectl create secret generic stage-cloudsql-secret \
      --from-literal=db_host=<YOUR-PRIVATE-IP-ADDRESS>
  • Обновил этот секретный модуль в разделе контейнеров следующим образом:
    env:
            - name: DB_HOST
              valueFrom:
                secretKeyRef:
                  name: stage-cloudsql-secret
                  key: db_host

Я обновил частный IP-адрес CloudSQL (вместе с именем БД, именем пользователя и паролем) в моем файле PHP (env.php), построил свой образ docker, создал pod в кластере GKE. При создании pod я получаю следующую ошибку от контейнера (неудачный контейнер):

SQLSTATE[HY000] [2002] Operation timed out

Примечание 1: Это работающее приложение в размещенной среде, и мы переносим его в облако Google

Заметка 2: GKE и Cloud SQL находятся в одном VPC (по умолчанию)

Заметка 3: Включено IP-алиасинг в кластере

Примечание 4: У меня есть контейнер, который создает данные в базе данных при запуске

Обновление 1

Я выполнил шаги, указанные в документации Google Cloud.Связь

У меня есть SSH в контейнере и я пытался добраться (Ping) до облака SQL, используя частный IP. Но я не смог

Обновление 2

После перехода по ссылкам выше я изменил способ создания секрета (на этот раз просто частный IP). Я также обновил свой env.php, как показано ниже

array (
    'table_prefix' => '',
    'connection' =>
    array (
      'default' =>
      array (
        'host' => getenv('DB_HOST'),

Ранее 'host' => [Частный IP-адрес Cloud SQL]

На этот раз при создании модуля отображается следующая ошибка:

SQLSTATE[HY000] [2002] Такого файла или каталога нет

Обновление 3

Я снова повторил все шаги и все заработало.

Связанный контент