Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes Gitlab Autodevops介绍如何始终保持一个豆荚存活_Kubernetes_Gitlab_Devops_Gitlab Ci_Kubernetes Helm - Fatal编程技术网

Kubernetes Gitlab Autodevops介绍如何始终保持一个豆荚存活

Kubernetes Gitlab Autodevops介绍如何始终保持一个豆荚存活,kubernetes,gitlab,devops,gitlab-ci,kubernetes-helm,Kubernetes,Gitlab,Devops,Gitlab Ci,Kubernetes Helm,我正在使用Gitlab Autodevops在我的kubernetes集群上部署应用程序。该应用程序应始终只运行一个实例。 问题是,在更新过程中,头盔在新pod准备就绪之前杀死当前正在运行的pod。这会导致停机时间,旧版本已经被终止,而新版本还没有准备好。更糟糕的是,应用程序需要很长的启动时间(2分钟以上) 我已尝试在podcruptionbudget中设置minAvailable:1,但没有任何帮助。 知道我该怎么告诉舵手在杀死旧的吊舱之前等待更新的吊舱准备就绪吗?(让两个实例同时运行几秒钟对

我正在使用Gitlab Autodevops在我的kubernetes集群上部署应用程序。该应用程序应始终只运行一个实例。 问题是,在更新过程中,头盔在新pod准备就绪之前杀死当前正在运行的pod。这会导致停机时间,旧版本已经被终止,而新版本还没有准备好。更糟糕的是,应用程序需要很长的启动时间(2分钟以上)

我已尝试在
podcruptionbudget
中设置
minAvailable:1
,但没有任何帮助。
知道我该怎么告诉舵手在杀死旧的吊舱之前等待更新的吊舱准备就绪吗?(让两个实例同时运行几秒钟对我来说不是什么问题)

您可以通过几种方式发布新的应用程序版本,有必要选择适合您需要的版本。 我建议采取以下措施之一:

倾斜-慢速卷展

渐变部署以某种方式更新POD,使用应用程序的新版本创建辅助复制集,然后减少旧版本的副本数量,增加新版本,直到达到正确的副本数量

可以找到完整的示例和步骤

蓝色/绿色-最好避免API版本控制问题

蓝色/绿色部署与渐变部署不同,因为应用程序的“绿色”版本与“蓝色”版本一起部署。在测试新版本满足要求后,我们更新了扮演负载平衡器角色的Kubernetes服务对象,通过替换选择器字段中的版本标签向新版本发送流量

可以找到完整的示例和步骤

金丝雀-用于测试

金丝雀部署包括将用户子集路由到新功能。在Kubernetes中,一个金丝雀部署可以使用两个具有公共pod标签的部署来完成。新版本的一个副本与旧版本一起发布。然后,在一段时间后,如果未检测到错误,则扩大新版本的副本数量并删除旧部署

使用这种复制集技术需要旋转尽可能多的吊舱以获得适当的流量百分比。也就是说,如果您想将1%的流量发送到版本B,则需要一个pod与版本B一起运行,99个pod与版本A一起运行。这可能会非常不方便管理。因此,如果您希望获得更好的流量分配管理,请查看负载平衡器,例如,这对交通提供了更大的控制

版本A的清单:

spec:
  replicas: 3
版本B的清单:

spec:
  replicas: 1
可以找到完整的示例和步骤

你也可以在Kubernetes上玩


我建议您阅读。

Ramped卷展栏有帮助。
spec:
  replicas: 3
spec:
  replicas: 1