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

这篇具有很好参考价值的文章主要介绍了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

error: 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文章来源地址https://www.toymoban.com/news/detail-773188.html

到了这里,关于Kubernetes(k8s)报错error: deployment “nginx-deployment“ exceeded its progress deadline的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s非root用户报错:error loading config file “/etc/kubernetes/admin.conf“: open /etc/kubernetes/admin.conf

    chatgpt回答的…… 这个错误是由于当前非root用户没有足够的权限来读取 \\\"/etc/kubernetes/admin.conf\\\" 配置文件导致的。在 Kubernetes 中,\\\"/etc/kubernetes/admin.conf\\\" 是用于管理员访问 Kubernetes 集群的配置文件,因此通常需要 root 用户或有足够权限的用户才能访问。 解决这个问题的方法有以

    2024年02月13日
    浏览(44)
  • 记Kubernetes(k8s) 集群报错:FATA[0000] listing images: rpc error: code = Unavailable desc = connection err

    💖The Begin💖点点关注,收藏不迷路💖 》报错详解: 根据输出信息,看起来 crictl 工具在尝试列出容器镜像时遇到了连接问题。错误信息显示 crictl 默认尝试使用多个端点进行连接,但由于默认设置已被弃用,建议您手动设置端点。 crictl 尝试使用 /var/run/dockershim.sock 等端点进

    2024年04月16日
    浏览(21)
  • 记Kubernetes(k8s) 节点kubeadm join报错:[ERROR FileContent--proc-sys-net-ipv4-ip_forward]

    💖The Begin💖点点关注,收藏不迷路💖 这个错误提示显示了一个预检错误,指出 /proc/sys/net/ipv4/ip_forward 的内容未设置为 1。在 Kubernetes 的预安装检查中,这是一个必要的设置,它允许数据包在节点之间进行转发。 要解决这个问题,需要设置 /proc/sys/net/ipv4/ip_forward 的值为 1。

    2024年04月14日
    浏览(71)
  • K8S deployment挂载

     Deployment部署文件 nginx容器页面目录挂载到emptyDir emptyDir目录是pod所在的node节点主机的目录,此目录下的data即对应容器里的/usr/share/nginx/html,实现目录挂载;图1红框里的号对应docker 的name中的编号,如下俩个图

    2024年02月12日
    浏览(28)
  • k8s学习-Deployment

    Kubernetes通过各种Controller来管理Pod的生命周期 。 为了满足不同业 务 景 , Kubernetes 开发了Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等多种Controller。我们⾸先学习最常用Deployment。 第一种是通过kubectl命令直接创建: 在最新的 Kubernetes 版本中,kubectl create deployment 命令不再直接

    2024年01月19日
    浏览(35)
  • k8s概念-deployment

    deployment用于部署无状态应用 Deployment集成了上线部署、滚动升级、创建副本、回滚等功能 Deployment里包含并使用了ReplicaSet Replicaset 通过改变Pod副本数量实现Pod的扩容和缩容 参考文档  https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/ 1 yaml文件 2 pod版本升级 查看帮助

    2024年02月14日
    浏览(30)
  • k8s中的deployment

            Deployment是k8s中用来管理发布的控制器,在开发的过程中使用非常频繁,本篇文章主要介绍deployment相关的使用和原理。 声明式API 最终一致性 水平触发 资源对象 。。。 定义一组pod的期望数量,controller会维持Pod的数量和期望的一致(其实deployment是通过管理rs的状态来

    2024年02月16日
    浏览(24)
  • k8s创建deployment

    在自定义ns中,使用create命令的方式创建一个3副本的deploy,镜像httpd:latest,端口自定义 2、查看deploy、rs、pod 3、两种方法,扩充副本数量为5 4、变更镜像版本 5、使用yaml文件生成deploy,要求同1 6、升级业务应用,通过变更镜像的方式 7、查看滚动升级的状态 8、查看升级历史

    2024年02月12日
    浏览(65)
  • k8s之Deployment篇

    Deployment官方文档: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ Deployment是kubernetes中最常用的资源对象,为ReplicaSet和Pod的创建提供了一种声明式的定义方法,在Deployment对象中描述一个期望的状态,Deployment控制器就会按照一定的控制速率把实际状态改成期望状态,通

    2024年02月05日
    浏览(27)
  • harbor+k8s deploy

    https://docs.docker.com/engine/install/ 添加自动补全

    2024年03月10日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包