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