ingress rollingUpdate 踩坑记录
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,网上很多文档都说deployment 配置readiness就可以实现无损rolling update,事实真的是这样吗?最近我们在生产环境发现一个现象,当deployment 定义的 replica
千家信息网最后更新 2026年11月03日ingress rollingUpdate 踩坑记录
网上很多文档都说deployment 配置readiness就可以实现无损rolling update,事实真的是这样吗?
最近我们在生产环境发现一个现象,当deployment 定义的 replicas 实例数只有1个的时候,执行rollingupdate 会有坑
按照官方文档的说明,deployment 执行rollingupdate 在启动时会先拉起新版本pod再干掉旧版本的pod,逐步将所有pod 升级成新版本
但实际测试过程中发现,执行rollingupdate 时,旧replicas 中的pod 立马会被干掉一个,如所示:
rollingupdate 前:
root@ubuntu:~ # kubectl get rsNAME DESIRED CURRENT READY AGEwebtest-static-test-com-56678f6856 1 1 1 50m
rollingupdate 中:
root@ubuntu:~ # kubectl get rsNAME DESIRED CURRENT READY AGEwebtest-static-test-com-56678f6856 0 0 0 50mwebtest-static-test-com-7d785c987 1 1 0 25m
执行rollingupdate 时,deployment 会创建一个新的rs,随即将旧rs 中的pod 干掉
可以看到这里不管新旧pod READY 的字段都是0,这里会有问题,执行rollingupdate 如果新版本服务启动比较慢(例如tomcat),那这段时间服务都不可用
rollingupdate 后:
root@ubuntu:~ # kubectl get rsNAME DESIRED CURRENT READY AGEwebtest-static-test-com-56678f6856 1 1 1 50mwebtest-static-test-com-7d785c987 0 0 0 25m
从另外一个终端每隔1s 发起一次curl 请求,可以看到升级期间服务中断:
root@ubuntu: ~ # for i in {0..99};do curl http://webtest-static.test.com/index.html ;echo;sleep 1;doneThis is server01 - Version - 2This is server01 - Version - 2503 Service Temporarily Unavailable 503 Service Temporarily Unavailable
nginx/1.15.8 503 Service Temporarily Unavailable 503 Service Temporarily Unavailable
nginx/1.15.8 ... ... This is server01 - Version - 3This is server01 - Version - 3当实例数(replicas 数) > 1 时,rollingupdate 过程中服务不会中断
附:deployment yaml
apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: webtest-static-test-comspec: strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 replicas: 1 template: metadata: labels: app: webtest-static-test-com domain: webtest-static.test.com version: v1 spec: imagePullSecrets: - name: registry.cn-hangzhou.aliyuncs.com containers: - name: webtest-static-sysop-duowan-com image: registry.cn-hangzhou.aliyuncs.com/test/webtest_static:2.6 command: ["/bin/bash","/data/scripts/run.sh"] - name: DLC-WEBTEST--WEBTEST1 value: "true" ports: - containerPort: 80 readinessProbe: exec: command: - curl - http://webtest-static.test.com/index.html - -x - "127.0.0.1:80" initialDelaySeconds: 20 periodSeconds: 5 successThreshold: 1---apiVersion: v1kind: Servicemetadata: name: webtest1-svc labels: app: webtest-static-test-com test: test1spec: ports: - port: 80 targetPort: 80 protocol: TCP name: http selector: app: webtest-static-test-com
服务
实例
文档
过程
升级
事实
会创
只有
字段
官方
实际
新旧
时候
时间
版本
环境
现象
终端
问题
测试
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技企业和互联网企业
重庆互联网络科技
互联网科技未来
互联网科技的
中国互联网科技发展
掌上梦互联网科技
深圳期待互联网科技
天扬科技互联网广告
美国互联网前沿科技
现代互联网科技股
受益于互联网科技的高速发展
上海宁丞科技互联网
企晟互联网信息科技有限公司
区块链结合互联网科技
科技互联网海报
互联网公司高科技产品
厦门江牛科技互联网
互联网科技股为什么大涨
互联网科技接地气
银川新华互联网科技学校原画
互联网科技巨头监管
互联网科技有限公司 翻译
成都仁贤领冠互联网科技有限公司
博兴的互联网电子科技公司
成都铂石互联网科技做什么的
苏州五指互联网络科技有限
佛山市拉法互联网科技有限公司
广西泛欧互联网科技有限公司
互联网科技大会大佬
广东猫王互联网科技有限公司电话