Kubernetes 删除pod时创建的pod超过指定数量

Kubernetes 删除pod时创建的pod超过指定数量,kubernetes,hashicorp-vault,kubernetes-helm,Kubernetes,Hashicorp Vault,Kubernetes Helm,我已经在AWS上的Kubernetes集群中部署了Hashicorp的保险库,并使用了头盔图表 部署中的副本数指定为3 在这3个吊舱中,1个已准备就绪1/1,而其他两个副本吊舱未准备就绪0/1。 我杀死了ready吊舱,虽然预计Kubernetes将部署一个新吊舱来取代它,但它部署了两个新吊舱 现在我有两个准备好的豆荚和两个未准备好的豆荚。删除其中一个豆荚后,Kubernetes现在只重新创建一个豆荚。因此,我的vault部署有4个而不是3个吊舱。 这背后的原因可能是什么?我们如何防止这种情况发

我已经在AWS上的Kubernetes集群中部署了Hashicorp的保险库,并使用了头盔图表

部署中的副本数指定为3

在这3个吊舱中,1个已准备就绪1/1,而其他两个副本吊舱未准备就绪0/1。 我杀死了ready吊舱,虽然预计Kubernetes将部署一个新吊舱来取代它,但它部署了两个新吊舱

现在我有两个准备好的豆荚和两个未准备好的豆荚。删除其中一个豆荚后,Kubernetes现在只重新创建一个豆荚。因此,我的vault部署有4个而不是3个吊舱。
这背后的原因可能是什么?我们如何防止这种情况发生?

当您遇到此类问题时,您应该

kubectl describe pod <PROBLEMATIC_POD>
并查看输出事件的下半部分

您的播客无法启动的一些原因可能是:

没有具有足够资源的可用节点来满足您的请求 没有可用卷 一些反亲缘关系规则和节点不足,因此计划程序无法将节点分配给POD。
部署不起作用,因为使用s3存储后端时HA高可用性不可用。您需要Hashicorp的Consor或AWS的DynamoDB,或其他后端提供商。如果您坚持使用s3后端提供程序,请将副本数更改为1

至于为什么你看到的是4个豆荚而不是3个豆荚,你需要提供更多细节。粘贴kubectl get pods-l app=vault以及kubectl descripe deploy-l app=vault的输出,我将更新此答案

我只能猜测它的价值。对于部署对象,有一个maxSurge属性,允许滚动更新扩展到所需的副本数量之外。它默认为25%,四舍五入,在您的情况下,这将是一个额外的1吊舱

最大浪涌

.spec.strategy.rollingUpdate.maxsupge是一个可选字段 指定可在网络上创建的最大吊舱数 所需的豆荚数。该值可以是的绝对数 例如,5或所需豆荚的百分比,例如,10%。这个 如果MaxUnavailable为0,则值不能为0。绝对数为 通过四舍五入从百分比计算。默认值为 25%

例如,当该值设置为30%时,新的复制集可以 滚动更新开始时立即放大,以便 新旧吊舱的总数不超过所需吊舱的130%。 一旦旧的豆荚被杀死,新的复制集就可以扩大 此外,确保随时运行的吊舱总数 在更新期间,最多为所需POD的130%


删除运行1/1 pod的一个pod以及其他pod的NotReady状态可能会使您的部署进入滚动更新或类似的状态,从而允许您的部署扩展到其maxSurge设置

您可以提供部署的配置吗?我使用此图表进行部署,按原样使用,只是添加了s3存储部件并使vault.dev=false听起来您对解决此问题的实际解决方案不感兴趣。如何成功运行vault?但是要解释一下为什么是4而不是3?为此,粘贴“kubectl get pods-l app=vault”以及“kubectl Descripte deploy-l app=vault”的输出会很有帮助。是的,我已经这样做了,我的问题不是它们没有进入就绪状态,但是,如果运行的POD超过了指定数量,则无法在图表中关闭高可用性。几天前,我还删除了有问题的部署。新部署没有任何此类问题。所以我不能检查吊舱。然而,我检查了吊舱,没有任何明显的问题。谢谢@你说得对。已启用ha_是Vault存储配置中的属性,而不是头盔图表中的属性。在这种情况下,如果您坚持使用s3后端,您可能需要将副本的数量更改为1。这就是它工作的原因吗?是的,将副本数更改为1是一种可能的解决方案。尽管我将复制副本的数量保持为3个,但它仍然可以作为一个pod正常工作,通常为1/1,而其他的则不是。事实上,这从来都不是问题所在。我只是好奇是什么原因导致复制副本的数量超过了指定的数量@UddhavBhosle我根据您提供的内容添加了一些推测,以了解它的价值。我想这和我这次所付出的努力差不多