ingress rollingUpdate 踩坑记录
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,网上很多文档都说deployment 配置readiness就可以实现无损rolling update,事实真的是这样吗?最近我们在生产环境发现一个现象,当deployment 定义的 replica
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
网络安全要注意的
卸载数据库时 共享功能吗
手动更换dns服务器地址
ssh租车管理系统数据库
电脑看群数据库
网络安全管理与技术
计算机网络技术与应用专业视频
慈溪即客网络技术有限公司
海淀公安局网络安全
网络安全的手抄报内容图片
中国电信网络安全工程师工资
淄博微信公众号软件开发哪家好
ps5原神港服无法登录服务器
信创服务器包装段
广州恒大球员数据库
网络技术安全工程师规划书
一个出入库盘点软件开发
t720服务器电源多少瓦
mybatis注解映射数据库
上海宜寻网络技术有限公司
正规网络安全管理
西安用什么软件开发微信小程序好
江苏豪华服务器云主机
中医糖尿病防治数据库
体积最小的服务器电源
云服务器能搭建数据库
量子通信与网络安全之间联系
ims 帐号 数据库
网络安全真假辨别
肇庆oa软件开发外包