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 小时前
【Linux系统】Rocky Linux 9.7操作系统简介
linux·运维·服务器·docker·kubernetes
DynamicsAgg9 小时前
企业数字化底座-k8s企业实践系列第二篇pod创建调度
java·容器·kubernetes
T1an-110 小时前
Docker + K8s:现代开发的“标配”
docker·容器·kubernetes
yzx99101313 小时前
实时数据流处理实战:从滑动窗口算法到Docker部署
算法·docker·容器
Sarapines Programmer14 小时前
【Docker】Windows 安装 Docker 简明指南
运维·docker·容器
万象.17 小时前
docker镜像操作实操
运维·docker·容器
F1FJJ18 小时前
VS Code 里管理 PostgreSQL,有哪些选择?主流扩展横向对比
网络·数据库·postgresql·容器
mit6.82419 小时前
llm-ready|docker|三文件规划
人工智能·容器
smchaopiao20 小时前
Docker核心架构拆解:模块功能与实操指南
云原生·eureka
国医中兴20 小时前
分布式存储的缓存优化:从理论到实践
微服务·云原生·容器·kubernetes·k8s