Подключение к облаку sql от gke через прокси - соединение отказано - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь подключить экземпляр mysql на облачном SQL-сервере к кластеру Google Kubernetes с помощью образа прокси-докера, используя это руководство.
У меня есть модуль с образом Ubuntu и клиентом MySQL иИзображение прокси-сервера в качестве дополнительной карты.
Журналы прокси-сервера показывают «Готов к новым подключениям», но когда я пытаюсь подключиться к прокси-серверу, используя клиент mysql и 127.0.0.1 (порт 3306) в качестве хоста, я получаю следующую ошибку:

ОШИБКА 2003 (HY000): не удается подключиться к серверу MySQL на 127.0.0.1 (111 «Отказано в соединении»).

Модуль содержит следующеефайл развертывания:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "20"
  creationTimestamp: 2019-01-30T15:29:58Z
  generation: 19
  labels:
    app: toolbox
  name: toolbox
  namespace: default
  resourceVersion: "1806058"
  selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/toolbox
  uid: e6ee574e-24a3-11e9-82e3-42010a9a0079
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: toolbox
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: toolbox
    spec:
      containers:
      - image: gcr.io/orayya-229213/toolbox:1.0
        imagePullPolicy: IfNotPresent
        name: toolbox
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      - command:
        - /cloud_sql_proxy
        - -instances=orayya-229213:europe-west2:orayya-db=tcp:0.0.0.0:3306
        - -credential_file=/secrets/cloudsql/credentials.json
        image: gcr.io/cloudsql-docker/gce-proxy:1.12
        imagePullPolicy: IfNotPresent
        name: cloudsql-proxy
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /secrets/cloudsql
          name: cloudsql-credentials
          readOnly: true
        - mountPath: /cloudsql
          name: cloudsql
      dnsPolicy: ClusterFirst
      nodeSelector:
        cloud.google.com/gke-nodepool: default-pool
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: cloudsql-credentials
        secret:
          defaultMode: 420
          secretName: cloudsql-credentials
      - emptyDir: {}
        name: cloudsql
status:
  availableReplicas: 1
  collisionCount: 1
  conditions:
  - lastTransitionTime: 2019-01-31T10:49:56Z
    lastUpdateTime: 2019-01-31T10:49:56Z
    message: Deployment has minimum availability.
    reason: MinimumReplicasAvailable
    status: "True"
    type: Available
  - lastTransitionTime: 2019-01-31T10:27:21Z
    lastUpdateTime: 2019-02-03T14:29:31Z
    message: ReplicaSet "toolbox-6d589d797" has successfully progressed.
    reason: NewReplicaSetAvailable
    status: "True"
    type: Progressing
  observedGeneration: 19
  readyReplicas: 1
  replicas: 1
  updatedReplicas: 1

Я также попробовал несколько других примеров вариантов.
Я буду рад предоставить дополнительную информацию, если необходимо.
Спасибо!

Редактировать:
Мне наконец удалось сделать эту работу.Я начал все сначала и, по-видимому, у меня была проблема с контейнером для инструментов.Спасибо всем, кто помог!

1 Ответ

0 голосов
/ 04 февраля 2019

Хотя я не могу помочь вам решить эту конкретную проблему без дополнительной информации, я могу дать вам несколько советов, которые помогут вам отладить ее.

Сначала выясните название стручка, на который вы хотите взглянуть.Из опубликованного конфига похоже, что вы можете использовать тег приложения для его поиска:

kubectl get pods -l=app=toolbox

Если вашего модуля нет в списке, значит, есть проблема с вашим развертыванием, и он не создает модули успешно.Если он указан в списке, проблема заключается в одном из модулей.

Модуль содержит два контейнера внутри него, поэтому следующим шагом является проверка прокси-сервера, чтобы убедиться, что он успешно запущен, и если он это сделалпочему он отказывается от соединений.

kubectl get logs <YOUR_POD_NAME> -c cloudsql-proxy

Это должно напечатать журналы, связанные с контейнером, и дать вам некоторую дополнительную информацию о том, почему он не работает.

...