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

相关推荐
罗技123几秒前
在 Kubernetes 上用 Fluent Bit 收集 Nginx 日志到 Easysearch
nginx·kubernetes·jenkins
小二·7 小时前
Go 语言系统编程与云原生开发实战(第38篇)
网络·云原生·golang
小二·7 小时前
Go 语言系统编程与云原生开发实战(第39篇)
开发语言·云原生·golang
小小unicorn7 小时前
[微服务即时通讯系统]文件存储子服务的实现与测试
c++·redis·微服务·云原生·架构
小小unicorn7 小时前
[微服务即时通讯系统]3.服务端-环境搭建
数据库·c++·redis·微服务·云原生·架构
九河云8 小时前
容器化与微服务:企业上云过程中的技术债务治理
大数据·微服务·云原生·重构·架构·数字化转型
不老刘8 小时前
OpenClaw Windows 下 Docker 部署指南
docker·容器·openclaw
白云偷星子8 小时前
云原生笔记6
linux·运维·笔记·mysql·云原生
白云偷星子8 小时前
云原生笔记5
linux·运维·笔记·云原生·tomcat