我遵循了本教程:https://cloud.google.com/python/django/kubernetes-engine,介绍了如何将Django应用程序部署到GKE。
不幸的是,在部署应用程序时我犯了一个错误,并且集群中的3个Pod之一无法启动。我相信我已经解决了故障,现在想重新部署应用程序。
我不知道该怎么做,或者如果我没有解决错误,这就是为什么它仍然是错误的。我也不知道该怎么办...
修复了Dockerfile之后,我重新构建并重新推送到Google Container Registry。它似乎已更新,但我不知道如何跟踪这种部署。
在GKE中推送新版本的应用程序并回滚的传统模型如何工作?
编辑:我特别遇到的问题是我在Django应用程序中更新了settings.py
,但是这并没有传播到我的集群中
答案 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集群和应用程序中,我还没有发现任何更好的东西。