删除吊舱时创建的吊舱数量超过指定数量

时间:2018-06-28 15:16:04

标签: kubernetes hashicorp-vault kubernetes-helm

我已经使用Helm图表在其AWS的Kubernetes集群中部署了Hashicorp的Vault。

部署中的副本数指定为secondaryValue

在这3个容器中,3已准备就绪(1),而其他两个副本容器尚未就绪(1/1)。 我杀死了准备就绪的Pod,虽然预计Kubernetes会部署一个新Pod来替换它,但它部署了两个新Pod。

现在我有两个准备好的豆荚和两个尚未准备好的豆荚。现在,在删除这些容器之一时,Kubernetes仅重新创建一个容器。因此,我的保管库部署使用0/1而不是4吊舱。 造成这种情况的原因可能是什么?我们如何防止这种情况发生?

2 个答案:

答案 0 :(得分:1)

您的部署不起作用,因为使用s3存储后端时HA(高可用性)不可用。您将需要Hashicorp的Consul或AWS的DynamoDB,或为此的其他后端提供商。如果您坚持使用s3后端提供程序,请将副本数更改为1。

至于为什么看到4个而不是3个,您需要提供更多详细信息。粘贴kubectl get pods -l app=vaultkubectl describe deploy -l app=vault的输出,然后我将更新此答案。

我只能猜测它的价值。对于Deployment对象,有一个maxSurge属性,该属性允许滚动更新以扩大到所需数量的副本之外。默认为25%(四舍五入),在您的情况下为1个额外的容器。

  

最大浪涌

     

.spec.strategy.rollingUpdate.maxSurge是一个可选字段,该字段   指定可以在其中创建的Pod的最大数量   所需数量的豆荚。该值可以是绝对数字(对于   例如5)或所需Pod的百分比(例如10%)。的   如果MaxUnavailable为0,则值不能为0。绝对数字为   根据四舍五入后的百分比计算得出。默认值为   25%。

     

例如,当此值设置为30%时,新的ReplicaSet可以是   滚动更新开始时立即放大,这样   新旧Pod的总数不超过所需Pod的130%。   一旦旧Pod被杀死,新的ReplicaSet就可以扩大规模   此外,确保随时运行的Pod总数   更新期间最多只能有130%的所需Pod。

有可能删除一个Running (1/1)吊舱以及其他吊舱的NotReady状态,使您的部署处于“滚动更新”或类似状态,从而使您的部署得以扩展为其maxSurge设置。

答案 1 :(得分:0)

遇到此类问题时,您应该

<span>
   <i class="fa fa-clock-o" aria-hidden="true"></i>
   {{story.utcDate | displayDate }}
</span>

,然后查看输出kubectl describe pod <PROBLEMATIC_POD> 的下部。

您的广告连播无法启动的某些原因可能是:

  • 没有可用节点,其资源足以满足您的请求
  • 无可用卷
  • 一些反亲和性规则且节点数量不足,因此调度程序无法将节点分配给您的Pod。