kubernetes - 如何在 Kubernetes 中等待部署完成
问题描述
作为我们 CI 管道的一部分,我们有一个用于许多 Web 服务的部署脚本,如下所示:
kubectl apply -f deployment1.yml
kubectl apply -f deployment2.yml
问题是管道的下一阶段有时会失败,因为服务在启动时还没有准备好。
我想在脚本中添加一行,内容如下:
Wait until all deployments are in the Ready state, or fail if more than 30 seconds has elapsed.
我认为以下方法可行,但不幸的是,超时标志似乎不可用:
kubectl rollout status deployment deployment1 --timeout=30s
kubectl rollout status deployment deployment2 --timeout=30s
我不想在没有超时的情况下运行“kubectl rollout status”,因为如果其中一个部署出现故障,这将导致我们的构建挂起。
解决方案
我找到了一个效果很好的解决方案。将属性设置为.spec.progressDeadlineSeconds
诸如 30 之类的值(默认为 600 或 10 分钟),并kubectl rollout status deployment
在显示错误消息并以非零退出代码退出之前等待这段时间:
$ kubectl rollout status deploy/nginx
Waiting for rollout to finish: 2 out of 3 new replicas have been updated...
error: deployment "nginx" exceeded its progress deadline
文档在这里:https ://kubernetes.io/docs/concepts/workloads/controllers/deployment/#failed-deployment
推荐阅读
- javascript - 如何进行firebase多路径推送?
- node.js - pm2重启时如何保留ram数据?Nodejs
- python - Python函数没有返回任何值
- python - 当小部件中的其他内容更改宽度时,PyQt Image(pixmap) 会被裁剪
- jwt - Auth0 如何使用 Lock 登录,然后根据我自己的数据库验证用户?
- mysql - Mysql Workbench - 将 sql 脚本从 ER 图中导出到数据库
- android - 如何将每天的上午 9:00 与 Android 系统时间进行比较?
- json - 如何获取 fetch 方法的返回值以放入警报中?
- javascript - 带函数参数的函数
- python - python和join混淆