首页 文章

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

提问于
浏览
0

我使用Helm图表在AWS上的Kubernetes集群中部署了Hashicorp的Vault .

部署中的副本数指定为 3 .

在这3个 beans 荚中, 1 已准备就绪( 1/1 ),而其他两个复制 beans 荚尚未准备就绪( 0/1 ) . 我杀死了现成的吊舱,虽然预计Kubernetes将部署一个新的吊舱来替换它,但它部署了两个新的吊舱 .

现在我有两个准备好的pod和两个没有准备好的pod . 在删除其中一个pod时,现在Kubernetes只重建一个pod . 所以我有 4 而不是 3 pods用于我的保险库部署 . 这背后可能是什么原因,我们如何防止这种情况?

2 回答

  • 0

    当你遇到这样的问题时,你应该这样做

    kubectl describe pod <PROBLEMATIC_POD>
    

    并查看输出的下半部分 Events .

    你的pod无法启动的一些原因可能是:

    • 没有可用于您的请求的足够资源的节点

    • 没有可用的卷

    • 一些反亲和规则和节点不足,因此调度程序无法将节点分配给您的pod .

  • 0

    您的部署无法正常工作,因为在使用s3存储后端时HA(高可用性)不可用 . 您需要Hashicorp的Consul或AWS的DynamoDB,或者需要不同的后端提供商 . 如果您坚持使用s3后端提供程序,请将副本数更改为1 .

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

    我只能推测它是什么 maxSurge 属性允许滚动更新扩展到所需的副本数量之外 . 它默认为25%,向上舍入,在您的情况下将是一个额外的1个窗格 .

    Max Surge .spec.strategy.rollingUpdate.maxSurge是一个可选字段,指定可以在所需数量的Pod上创建的最大Pod数 . 该值可以是绝对数(例如,5)或所需Pod的百分比(例如,10%) . 如果MaxUnavailable为0,则该值不能为0.绝对数量是通过向上舍入的百分比计算的 . 默认值为25% . 例如,当此值设置为30%时,可以在滚动更新开始时立即按比例放大新的ReplicaSet,这样旧的和新的Pod的总数不会超过所需Pod的130% . 一旦旧的Pod被杀死,新的ReplicaSet可以进一步扩展,确保在更新期间随时运行的Pod总数最多为所需Pod的130% .

    删除一个 Running (1/1) pod以及其他pod的NotReady状态可能会使您的部署处于"rolling update"状态或沿着这些行的某些状态,这使您的部署可以扩展到其 maxSurge 设置 .

相关问题