将Django应用程序重新部署到Google Kubernetes Engine(GKS)

时间:2019-04-26 18:47:53

标签: django kubernetes google-kubernetes-engine

我遵循了本教程:https://cloud.google.com/python/django/kubernetes-engine,介绍了如何将Django应用程序部署到GKE。

不幸的是,在部署应用程序时我犯了一个错误,并且集群中的3个Pod之一无法启动。我相信我已经解决了故障,现在想重新部署应用程序。

我不知道该怎么做,或者如果我没有解决错误,这就是为什么它仍然是错误的。我也不知道该怎么办...

修复了Dockerfile之后,我重新构建并重新推送到Google Container Registry。它似乎已更新,但我不知道如何跟踪这种部署。

在GKE中推送新版本的应用程序并回滚的传统模型如何工作?

编辑:我特别遇到的问题是我在Django应用程序中更新了settings.py,但是这并没有传播到我的集群中

2 个答案:

答案 0 :(得分:3)

通常的方法是使用新标签推送新图像,然后在“部署”(https://github.com/GoogleCloudPlatform/python-docs-samples/blob/78d8a59d59c5eca788495666b43283534a50b7ee/container_engine/django_tutorial/polls.yaml#L42)中编辑容器图像标签,然后重新应用文件(kubectl apply -f polls.yml)。但是,由于他们的示例未使用图像标签(读取:隐式使用标签latest),因此您只需要删除现有的Pod并强制所有三个容器重新启动即可。一种快速的方法是kubectl delete pod -n app=polls

答案 1 :(得分:0)

您可以删除Pod来更新应用程序,但是这样做仅仅是为了更新应用程序,这在生产中效果不佳,因为它会在启动新Pod时导致停机。

在生产中,您必须触发部署的滚动更新,该更新将旧版本保留在原位置,直到准备好新版本,然后切换到新版本。要开始滚动更新部署,可以使用以下命令:

kubectl -n NS patch deploy DEPLOYMENT_NAME -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\":\"`date +'%s'`\"}}}}}"

我知道它看起来很糟糕,但是到目前为止,在这么多Kubernetes集群和应用程序中,我还没有发现任何更好的东西。