red*_*888 4 kubernetes kubectl
我将 ProgressDeadlineSeconds 设置为 120 秒
我部署并运行kubectl rollout status deployment mydeployment
部署失败,并显示0 of 1 updated replicas available - CrashLoopBackOff
但 kubectl 仍然永远挂着消息:Waiting for deployment "mydeployment" rollout to finish: 0 of 1 updated replicas are available...
为什么会发生这种情况,progressDeadlineSeconds 应该强制它失败并导致kubectl rollout status deployment以非零返回代码退出,对吗?
您是对的,kubectl rollout status如果部署超出了进度截止日期,则返回非零退出代码。进度截止时间秒:
.spec.progressDeadlineSeconds是一个可选字段,指定在系统报告部署进度失败之前您希望等待部署进度的秒数 - 作为带有Type=Progressing, 的条件出现Status=False。以及Reason=ProgressDeadlineExceeded资源的状态。部署控制器将不断重试部署。默认为 600。将来一旦实现自动回滚,Deployment 控制器一旦观察到这种情况就会回滚 Deployment。如果指定,该字段需要大于
.spec.minReadySeconds。
这就引出了最小就绪秒数
.spec.minReadySeconds是一个可选字段,指定新创建的 Pod 在没有任何容器崩溃的情况下应准备就绪的最小秒数,以便将其视为可用。默认为 0(Pod 一旦准备好就被视为可用)。
如果没有确切的部署配置,很难判断问题出在哪里,但有几件事需要检查:
尝试同时设置progressDeadlineSeconds并minReadySeconds记住后者必须具有较小的值。
progressDeadlineSeconds与 一起使用时可能不会受到尊重Replicas: 1。检查您的maxUnavailable参数以查看它是否允许部署完全不可用。
作为解决方法,您可以为命令指定超时期限kubectl rollout status。例如:kubectl rollout status deployment mydeployment --timeout=120s
如果您不想等待推出完成,则可以使用--watch=false. 您将必须通过运行命令来手动检查状态kubectl describe deployment,kubectl get deployment这可能并不理想。
如果有帮助,请告诉我。
| 归档时间: |
|
| 查看次数: |
11692 次 |
| 最近记录: |