我一直致力于将一个简单的Django项目部署到谷歌云平台。
然而,部署的应用程序总是失败,基本上是这样的:
Django Version: 2.1.3
Exception Type: OperationalError
Exception Value:
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Exception Location: /env/lib/python3.6/site-packages/psycopg2/__init__.py in connect, line 130
Python Executable: /env/bin/python3
Python Version: 3.6.7
我可以在本地使用完全相同的django项目部署——连接到部署的应用程序尝试连接的同一个云sql实例,并且运行良好。我可以通过简单地终止本地cloud_sql_proxy来在本地复制错误。
这告诉我,python/django应用程序在本地和部署时都是一样的。此外,云SQL数据库运行良好,但由于某种原因,我使用的部署映像gcr.io/cloudsql docker/gce proxy:1.05不工作,或者我部署的应用程序无法连接到此代理。
我已经运行了几次Django Polls应用程序的部署[https://cloud.google.com/python/django/kubernetes-engine]它为社区所熟知,并成功地做到了几次,以培养一些熟悉度,然后应用与我自己的项目相同的步骤来解决这个问题。
我的pod日志没有显示任何错误。我已经将我的.yaml和Dockerfiles与许多有效的示例进行了比较,但没有发现任何问题,而且SO上的其他相关问题似乎也没有解决这一问题。
作为一个学习过程,我已经尝试了一天左右的故障排除,但没有取得进一步的进展。
如果您能为我们排除故障提供帮助,我们将不胜感激。
我在故障排除中的差距是,我没有意识到检查pod日志并没有给我来自sql代理组件的日志,只有应用程序组件的日志。当我检查sql代理的日志时,很明显该项目没有启用Cloud sql Admin API。启用它解决了这个问题。
希望这个答案能帮助其他谷歌用户。