Kubernetes(k8s)报错error: deployment “nginx-deployment“ exceeded its progress deadline

1. Pod升级报错

1)exceeded its progress deadline

kubernetes执行命令kubectl rollout status deployment.v1.apps/nginx-deployment后提示错误如下:

error: deployment "nginx-deployment" exceeded its progress deadline

检查Deployment描述kubectl describe deployment nginx-deployment

在这里插入图片描述

报错原因:Pod升级超过了最大的时间限制,变成了超时状态,Pod升级失败

查看描述信息可以得知是因为nginx的版本nginx:1.91错误,实际上并没有这个版本。且这种版本错误执行Pod升级命令后还有另外一种报错信息,如下:

2)Waiting for deployment…………

Waiting for deployment "nginx-deployment" rollout to finish: 1 out of 3 new replicas have been updated...

报错原因:因为使用的是不存在的镜像,系统无法进行正确的镜像升级,会一直处于Waiting状态,需要使用Ctrl+C组合键来终止此操作。

2. 失败的Deployment

2.1 Deployment失败原因

当使用Deployment控制器部署最新的ReplicaSet时,可能会遇到错误,一直处于未完成的状态。造成此情况的一些可能因素如下:

  1. 配额(Quota)不足

资源的配额管理(Resource Quotas):可以为每一个命名空间(namespace)提供一个总体的资源使用限制,通过它可以限制命名空间中某个类型的对象的总数目上限,也可以设置命名空间中Pod可以使用到的计算资源的总上限。

  1. 就绪探测(Readiness Probe)失败

Readiness Probe :用于判断容器是否启动完成(ready状态),可以接收请求。如果ReadinessProbe探针检测到失败,则Pod的状态被修改。Endpoint Controller将从Service的Endpoint中删除包含该容器所在Pod的Endpoint。

  1. 镜像拉取错误
  2. 权限不足
  3. 限制范围(Limit Ranages)问题
  4. 应用程序运行时的配置错误

检测上述状态的一种方法是在Deployment规约中指定截止时间参数:.spec.progressDeadlineSeconds

.spec.progressDeadlineSeconds给出的是一个秒数值,Deployment控制器在标示Deployment进展停滞之前,需要等待所给的时长。一旦超过这个时间(.spec.progressdeadlineSeconds规定的时间),使用kubectl rollout status命令查看Deployment更新的过程就会报错,如下:

Waiting for rollout to finish: 2 out of 3 new replicas have been updated...
error: deployment "nginx" exceeded its progress deadline

需要注意的是,这正是开篇所讲的两种报错,即Deployment已超过进度限期。

2.2 进度期限秒数

.spec.progressDeadlineSeconds 是一个可选字段,用于指定系统在报告 Deployment 进展失败之前等待 Deployment 取得进展的秒数。

这类报告会在资源状态中体现为 type: Progressingstatus: Falsereason: ProgressDeadlineExceeded

Deployment 控制器将在默认 600 毫秒内持续重试 Deployment。 将来,一旦实现了自动回滚,Deployment 控制器将在探测到这样的条件时立即回滚 Deployment。

以下 kubectl 命令设置规约中的 progressDeadlineSeconds,从而告知控制器 在 10 分钟后报告 Deployment 的上线没有进展:

kubectl patch deployment/nginx-deployment -p '{"spec":{"progressDeadlineSeconds":600}}'

输出类似于:

deployment.apps/nginx-deployment patched

超过截止时间后,Deployment 控制器将添加具有以下属性的 Deployment 状况到 Deployment 的 .status.conditions 中:

  • type: Progressing
  • status: "False"
  • reason: ProgressDeadlineExceeded

声明:参考资料为k8s文档,感兴趣的可自行查看:

传送门1

传送门2

  • 32
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向之 所欣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值