Превышено время ожидания подключения к стороннему серверу Kubernetes Cloud.Как проверить, работают ли учетные данные? - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь настроить образ Docker Cloud SQL Proxy для PostgreSQL, как упоминалось здесь . Я могу заставить свое приложение подключиться к образу прокси-докера, но время прокси истекло. Я подозреваю, что это мои учетные данные или порт, так как мне отладить и выяснить, работает ли он? Это то, что у меня есть на моем проекте

kubectl create secret generic cloudsql-instance-credentials --from-file=credentials.json=my-account-credentials.json

Мой фрагмент спецификации развертывания:

spec:
      containers:
        - name: mara ...
        - name: cloudsql-proxy
          image: gcr.io/cloudsql-docker/gce-proxy:1.11
          command: ["/cloud_sql_proxy",
                    "-instances=<MY INSTANCE NAME>=tcp:5432",
                    "-credential_file=/secrets/cloudsql/credentials.json"]
          volumeMounts:
            - name: cloudsql-instance-credentials
              mountPath: /secrets/cloudsql
              readOnly: true
      volumes:
        - name: cloudsql-instance-credentials
          secret:
            secretName: cloudsql-instance-credentials

В логах моего cloudql-прокси указано время ожидания:

2019/05/13 15:08:25 using credential file for authentication; email=646092572393-compute@developer.gserviceaccount.com
2019/05/13 15:08:25 Listening on 127.0.0.1:5432 for <MY INSTANCE NAME>
2019/05/13 15:08:25 Ready for new connections
2019/05/13 15:10:48 New connection for "<MY INSTANCE NAME>"
2019/05/13 15:10:58 couldn't connect to <MY INSTANCE NAME>: dial tcp <MY PRIVATE IP>:3307: getsockopt: connection timed out

Вопросы:

  • Я указываю 5432 в качестве моего порта, но, как вы можете видеть в журналах выше, он набирает 3307. Это нормально, и если нет, как мне указать 5432?

  • Как проверить, есть ли проблема с моими учетными данными? Мой файл учетных данных из моей учетной записи службы 123-compute@developer.gserviceaccount.com и учетная запись службы, отображаемая при переходе на облачную консоль sql, p123-<somenumber>@gcp-sa-cloud-sql.iam.gserviceaccount.com. Они не кажутся одинаковыми? Имеет ли это значение?

Если я сделаю экземпляр Cloud SQL доступным на общедоступном IP-адресе, он будет работать.

1 Ответ

1 голос
/ 13 мая 2019

Я указываю 5432 в качестве моего порта, но, как вы можете видеть в журналах выше, он набирает 3307

Прокси-сервер локально прослушивает указанный вами порт (в данном случае 5432) и подключается к вашему экземпляру Cloud SQL через порт 3307. Это ожидаемое и нормальное явление.

Как проверить, не связана ли проблема с моими учетными данными?

Прокси-сервер возвращает ошибку авторизации, если экземпляр Cloud SQL не существует или учетная запись службы не имеет доступа.Ошибка тайм-аута соединения означает, что ему не удалось достичь экземпляра Cloud SQL.

Мой файл учетных данных принадлежит моей учетной записи службы 123-compute@developer.gserviceaccount.com, а учетная запись службы, отображаемая при переходе на облачную консоль sql, называется p123- @ gcp-sa-cloud-sql.iam.gserviceaccount.com.Они не кажутся одинаковыми?

Один - это просто имя файла, другой - имя самой учетной записи службы.Имя файла не обязательно должно совпадать с именем учетной записи службы.Вы можете проверить имя и роли IAM учетной записи службы в учетной записи службы страница .

2019/05/13 15:10:58 не удалось подключиться к: dial tcp: 3307: getsockopt: время ожидания истекло

Эта ошибка означает, что проксине удалось установить сетевое соединение с экземпляром (обычно потому, что путь из текущего местоположения не существует).Для этого есть две общие причины:

Во-первых, убедитесь, что на порту 3307 нет брандмауэра или чего-то, что блокирует исходящие соединения.

Во-вторых, поскольку вы используете частный IP, вам нужночтобы убедиться, что ресурс, на котором вы используете прокси, соответствует требованиям к сети .

...