Kubernetes progressDeadlineSeconds未正确超时

Kubernetes progressDeadlineSeconds未正确超时,kubernetes,kubectl,Kubernetes,Kubectl,我已将progressDeadlineSeconds设置为120秒 我部署并运行kubectl卷展栏状态部署mydeployment 部署失败,1个更新副本中有0个可用-CrashLoopBackOff 但kubectl仍然永远挂在那里,并显示以下消息:等待部署“mydeployment”卷展结束:1个更新副本中的0个可用… 为什么会发生这种情况,progressDeadlineSeconds会强制它失败,并导致kubectl卷展栏状态部署以非零返回代码退出,对吗?您是正确的,kubectl卷展

我已将progressDeadlineSeconds设置为120秒

我部署并运行
kubectl卷展栏状态部署mydeployment

部署失败,1个更新副本中有
0个可用-CrashLoopBackOff

但kubectl仍然永远挂在那里,并显示以下消息:
等待部署“mydeployment”卷展结束:1个更新副本中的0个可用…


为什么会发生这种情况,progressDeadlineSeconds会强制它失败,并导致
kubectl卷展栏状态部署
以非零返回代码退出,对吗?

您是正确的,
kubectl卷展栏状态
如果部署已超过进度截止日期,则返回非零退出代码:

.spec.progressDeadlineSeconds
是一个可选字段,用于指定 要等待部署进行的秒数 在系统报告部署失败之前 正在进行-显示为具有
Type=progressing
的条件,
Status=False
。并且
Reason=progressdeadlineextended
处于 资源。部署控制器将继续重试 部署。默认值为600。将来,一旦自动 将实施回滚,部署控制器将回滚 一旦观察到这种情况就立即部署

如果指定,此字段需要大于
.spec.minReadySeconds

这让我们想到

.spec.minReadySeconds
是一个可选字段,用于指定 新创建的Pod应使用的最小秒数 准备好了,没有任何容器发生碰撞,以供考虑 可用。默认为0(Pod将被视为可用) 一旦准备好)

如果没有精确的部署配置,很难判断问题出在哪里,但需要检查的内容很少:

  • 尝试设置
    progressDeadlineSeconds
    minReadySeconds
    ,记住后者必须具有较小的值

  • progressDeadlineSeconds
    副本1一起使用时可能不受尊重。检查
    maxUnavailable
    参数,查看它是否允许部署完全不可用

  • 作为一种解决方法,您可以为
    kubectl卷展栏状态
    命令指定超时时间。例如:
    kubectl卷展栏状态部署mydeployment--timeout=120s

  • 如果不想等待卷展栏完成,则可以使用
    --watch=false
    。您将不得不通过运行
    kubectl descripe deployment
    kubectl get deployment
    命令手动检查状态,这可能并不理想


请让我知道这是否有帮助。

您可以通过编辑问题来分享您的部署yaml吗?您的Kubernetes版本是什么?