spring cloud gateway k8s优雅启停

通过配置readiness探针和preStop hook,实现优雅启动和停止(滚动部署)

  1. k8s工作负载配置
python 复制代码
          readinessProbe:
            httpGet:
              path: /datetime
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 30
            timeoutSeconds: 1
            periodSeconds: 30
            successThreshold: 1
            failureThreshold: 6
          lifecycle:
            preStop:
              exec:
                command:
                  - /bin/sh
                  - '-c'
                  - sleep 15s
  1. 网关改造
java 复制代码
@SpringBootApplication
public class GracefulShutdownApplication {

	public static void main(String[] args) {
		SpringApplication.run(GracefulShutdownApplication.class, args);
	}

	@Bean
	public GracefulShutdown gracefulShutdown() {
		return new GracefulShutdown();
	}
}
java 复制代码
public class GracefulShutdown implements ApplicationListener<ContextClosedEvent> {
    @Override
    public void onApplicationEvent(ContextClosedEvent contextClosedEvent) {
        HttpResources.disposeLoopsAndConnectionsLater().delaySubscription(Duration.ofSeconds(20)).block();
    }
}

经过测试发现,可以实现请求0失败

相关推荐
阿里云云原生8 小时前
Personal Agent 观察:拆解全天候运行的技术挑战
云原生·agent
SelectDB技术团队9 小时前
Snowflake 的开源替代怎么选:能力对照、三条部署路径与迁移执行
大数据·数据库·云原生·开源·snowflake·apache doris
时间售卖铺10 小时前
Nginx 反向代理
运维·nginx·云原生
Regentsoft丽晶软件10 小时前
服装B2B分销返利规则引擎:多返利池与历史订单区分的技术设计
云原生·产品运营·需求分析
阿里云云原生10 小时前
非算法工程师也能看懂,推理框架的来龙去脉
云原生
Lysander.Jovian12 小时前
Node 和 Cluster部署
kubernetes
m0_6174939412 小时前
昇腾 NPU Docker 部署实战:解决 stub library 报错并实现模型正常加载
运维·docker·容器
科学熊13 小时前
深入浅出 Kubernetes介绍
kubernetes
xixiaoyunya13 小时前
Docker 常用命令与实战:从入门到部署一个简单应用
docker·容器·eureka
ん贤15 小时前
温习微服务基础知识
微服务·云原生·架构