我们有一个Kubernetes集群,它有几个部署,每个部署可以同时运行多个pod(到目前为止都是标准的)。我们需要做一些数据库迁移(不托管在集群上),并且不能让我们的任何代码在发生迁移时潜在地改变值——因此,我们需要让一些部署的所有pod离线一段时间,然后再重新启动它们。
我们想做的是找到一种合理的方式,有流量将路由到这些豆荚,而不是路由到简单的HTML错误页面(在适当的地方),而我们正在工作,但不必手动触摸每个豆荚,因为它们总是可以重新启动或缩放,而我们正在工作。
一些可能有助于回答我们问题的相关信息:
- 我们为整个集群提供了一个负载均衡器,它位于我们的SSL终止器/反向代理(当前也运行在多个pod上)的顶部。
- 我们在每个部署前都有负载均衡器(即负载均衡器负责在给定部署的pod之间路由子域流量)
- 我们托管在Azure Kubernetes服务(如果有区别)
- 我们想要离线的pod是运行linux容器与Nginx
我建议将部署扩展到0个副本在本例中如何使Kubernetes部署的所有pod脱机?
使用如。
kubectl scale deployment <my-app> --replicas=0
您可以通过扩展到所需的副本数量来轻松地恢复此设置。
您还可以同时扩展多个部署,如果它们有一个共同的标签:
kubectl scale deployment -l my-label=my-value --replicas=0
您可以使用
向部署添加标签kubectl label deployment <my-app> my-label=my-value