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失败

相关推荐
阿里云云原生13 分钟前
从数据孤岛到智能洞察:构建面向未来的 Operation intelligence 体系
云原生
阿里云云原生1 小时前
阿里云可观测 2025 年 9 月产品动态
云原生
周杰伦_Jay2 小时前
【PaddleOCR深度解析与DeepSeek-OCR对比】开源OCR工具库的技术路线与场景适配
人工智能·机器学习·云原生·架构·开源·ocr
七夜zippoe3 小时前
压缩与缓存调优实战指南:从0到1根治性能瓶颈(四)
运维·docker·容器
小任今晚几点睡3 小时前
kubernets简介和部署
kubernetes·k8s·kubernets in docker
一念一花一世界4 小时前
Arbess从入门到实战(16) - 使用Arbess+Gitee实现K8s自动化部署
ci/cd·云原生·容器·kubernetes·tiklab
java_logo5 小时前
Docker 部署 MinerU 教程:打造你的本地 PDF 智能处理中心
linux·运维·人工智能·docker·ai·容器·aigc
技术杠精6 小时前
Docker Swarm之Java 应用部署与平滑更新
java·docker·容器
ajax_beijing7 小时前
修改k8s的镜像源为国内镜像源
云原生·容器·kubernetes
A-刘晨阳7 小时前
K8S 二进制集群搭建(一主两从)
linux·运维·云原生·容器·kubernetes