千家信息网

kubernetes对服务滚动更新时出现连接异常怎么办

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇文章给大家分享的是有关kubernetes对服务滚动更新时出现连接异常怎么办,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。当kube
千家信息网最后更新 2025年12月02日kubernetes对服务滚动更新时出现连接异常怎么办

本篇文章给大家分享的是有关kubernetes对服务滚动更新时出现连接异常怎么办,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

当kubernetes对服务滚动更新的期间,默认配置的情况下可能会让部分连接异常(比如连接被拒绝),我们来分析下原因并给出最佳实践

滚动更新场景

使用 deployment 部署服务并关联 service

  • 修改 deployment 的 replica 调整副本数量来滚动更新

  • 升级程序版本(修改镜像tag)触发 deployment 新建 replicaset 启动新版本的 pod

  • 使用 HPA (HorizontalPodAutoscaler) 来对 deployment 自动扩缩容更新过程连接异常的原因滚动更新时,service 对应的 pod 会被创建或销毁,也就是 service 对应的 endpoint 列表会新增或移除endpoint,更新期间可能让部分连接异常,主要原因是:

  • pod 被创建,还没完全启动就被 endpoint controller 加入到 service 的 endpoint 列表,然后 kube-proxy 配置对应的路由规则(iptables/ipvs),如果请求被路由到还没完全启动完成的 pod,这时 pod 还不能正常处理请求,就会导致连接异常

  • pod 被销毁,但是从 endpoint controller watch 到变化并更新 service 的 endpoint 列表到 kube-proxy 更新路由规则这期间有个时间差,pod可能已经完全被销毁了,但是路由规则还没来得及更新,造成请求依旧还能被转发到已经销毁的 pod ip,导致连接异常最佳实践

  • 针对第一种情况,可以给 pod 里的 container 加 readinessProbe (就绪检查),这样可以让容器完全启动了才被endpoint controller加进 service 的 endpoint 列表,然后 kube-proxy 再更新路由规则,这时请求被转发到的所有后端 pod 都是正常运行,避免了连接异常

  • 针对第二种情况,可以给 pod 里的 container 加 preStop hook,让 pod 真正销毁前先 sleep 等待一段时间,留点时间给 endpoint controller 和 kube-proxy 清理 endpoint 和路由规则,这段时间 pod 处于 Terminating 状态,在路由规则更新完全之前如果有请求转发到这个被销毁的 pod,请求依然可以被正常处理,因为它还没有被真正销毁

最佳实践 yaml 示例:

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: nginxspec:  replicas: 1  selector:    matchLabels:      component: nginx  template:    metadata:      labels:        component: nginx    spec:      containers:      - name: nginx        image: "nginx"        ports:        - name: http          hostPort: 80          containerPort: 80          protocol: TCP        readinessProbe:          httpGet:            path: /healthz            port: 80            httpHeaders:            - name: X-Custom-Header              value: Awesome          initialDelaySeconds: 15          timeoutSeconds: 1        lifecycle:          preStop:            exec:              command: ["/bin/bash", "-c", "sleep 30"]

以上就是kubernetes对服务滚动更新时出现连接异常怎么办,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

更新 路由 规则 服务 时间 原因 情况 部分 实践 怎么办 时出 更多 知识 篇文章 处理 配置 实用 也就是 副本 场景 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东移动宽带dns服务器 node把数据库传到服务端 数据库的不安全因素及解决办法 普宁市青少年网络安全宣传 交易所接口数据库 驱动开发和软件开发的不同 南通网站服务器哪个厂家质量好 千峰360网络安全学院 移动网络安全专家 元气骑士哪个服务器没有广告 疾控网络安全建设保障方案 数据库中如何查询触发器 深圳华宇互联网科技贵阳分公司 山东市级国土空间规划数据库汇交 软件开发的发展特点 打联通电话说乐话信箱服务器 lol掉线重新连接到服务器 上传文件到远程服务器 安徽天赢网络技术有限公司 长连接服务器 达梦数据库兼容mysql吗 韩城市第七届网络安全宣传周 数据库无法打字 我的世界龙啸服务器第二期 三级数据库技术简单么 服务器配件缺货 咖啡厅效果图软件开发 上古卷轴刀锋服务器异常 上海现代网络技术特点 中国人民公安大学网络安全
0