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

相关推荐
菜鸟40428 分钟前
Hermes实战案例_NAS 上跑了个 AI 管家:从信息孤岛到飞书一句话调度
云原生·eureka
摇滚侠10 小时前
Docker 如何查询挂载的目录
运维·docker·容器
头发够用的程序员10 小时前
C++和Python面试经典算法汇总(一)
开发语言·c++·python·算法·容器·面试
吃胖点儿14 小时前
CNCF全景图与云原生成熟度模型
云原生
胡小禾15 小时前
K8S常识-如何指定只更新一个deployment中的某一个实例
云原生·容器·kubernetes
呆萌的代Ma16 小时前
docker内的n8n配置Code节点运行python代码
python·docker·容器
活跃的煤矿打工人17 小时前
【星海出品】dify 的使用
云原生·eureka
codeejun19 小时前
每日一Go-59、云原生入门为什么一定要学Docker?
docker·云原生·golang
赵鑫亿21 小时前
ClawPanel — 开源 OpenClaw 智能管理面板,20+ 通道接入 / 多模型配置 / Docker 一键部署
docker·容器·开源
杨云龙UP21 小时前
Windows Server 2012 环境下 Oracle 11.2 使用 expdp 实现自动备份、异地复制与定期清理_20260504
服务器·数据库·windows·mysql·docker·oracle·容器