GKE Django MySQL недоступен во время скользящего обновления

У меня есть приложение Django, развернутое в GKE. (Сделано с помощью этого учебника)

Мой файл конфигурации: myapp.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    app: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-app
        image: gcr.io/myproject/myapp
        imagePullPolicy: IfNotPresent

    ---------

      - image: gcr.io/cloudsql-docker/gce-proxy:1.16
        name: cloudsql-proxy
        command: ["/cloud_sql_proxy", "--dir=/cloudsql",
                  "-instances=myproject:europe-north1:myapp=tcp:3306",
                  "-credential_file=/secrets/cloudsql/credentials.json"]


apiVersion: v1
kind: Service
metadata:
  name: myapp
  labels:
    app: myapp
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: myapp

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.environ['DATABASE_NAME'],
        'USER': os.environ['DATABASE_USER'],
        'PASSWORD': os.environ['DATABASE_PASSWORD'],
        'HOST': '127.0.0.1',
        'PORT': os.getenv('DATABASE_PORT', '3306'),
    }

Теперь, когда я делаю скользящее обновление или через

kubectl rollout restart deployment myapp

или

kubectl apply -f myapp.yaml

kubectl get pods находится в следующем состоянии:

NAME                         READY   STATUS        RESTARTS   AGE
myapp-8477898cff-5wztr   2/2     Terminating   0          88s
myapp-8477898cff-ndt5b   2/2     Terminating   0          85s
myapp-8477898cff-qxzsh   2/2     Terminating   0          82s
myapp-97d6ccfc4-4qmpj    2/2     Running       0          6s
myapp-97d6ccfc4-vr6mb    2/2     Running       0          4s
myapp-97d6ccfc4-xw294    2/2     Running       0          7s

Я получаю следующую ошибку в течение некоторого времени во время развертывания:

OperationalError at /
(2003, "Can't connect to MySQL server on '127.0.0.1' (111)")

Посоветуйте, пожалуйста, как я могу настроить параметры, чтобы развертывание происходило без простоя/этой ошибки

Похоже, что боковая ветвь для прокси завершает работу и не позволяет вам очистить ее до того, как это сделает приложение.

Рассмотрите возможность использования флага -term-timeout, чтобы дать себе немного времени: https://github.com/GoogleCloudPlatform/cloudsql-proxy#-term_timeout30s

Вернуться на верх