K8S 无感发布
大约 3 分钟
背景
问题一: 比如现在k8s有个deployment,有3个pod。此时有个请求在pod A中进行处理,假设需要耗时5分钟。在这个5分钟内,执行了k8s的滚动发布,并开始销毁这个pod。 这个场景下,如果不做一些额外配置,那么pod A的这个请求应该会处理异常。
问题二: 滚动发布的时候,k8s刚启动了一个pod,但这个pod可能需要等一段时间才能真正对外提供服务。但k8s此时开始转发请求到这个pod了,这种情况下,请求是不能成功处理的
核心问题:
- k8s如何知道pod可以对外提供服务了
- pod如何知道k8s要销毁这个pod了,pod里的应用程序知道后就能自己进行shutdown
配置
其实主要利用k8s pod的两个东西:
- 就绪探针
- preStop
如果pod中运行的是spring boot项目,那么就可以结合spring-actuator来完成。
- 就绪探针就配置 /actuator/health,或者自定义一个url
- preStop就配置/actuator/shutdown
系统推荐
- RSA 加密解密多语言实现方案
- Nacos-Spring Gateway-Spring boot无感发布
- CloudFlare 客户端证书的使用
- 乱七八糟的笔记
- Hadoop 一
- Centos离线安装Docker
- PGSQL的json和 jsonb 读写性能测试
- 前端axios下载csv文件乱码
- vuepress-theme-hope使用心得
- Nginx的双向认证配置
- Docker跨主机通信方案
- 免费 API 每日提供摸鱼日报,自动返回无水印图片,适用于公众号和小程序
- 随机毒鸡汤:众里寻她千百度,蓦然回首,那人依旧对我不屑一顾。