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

相关推荐
猫头虎9 小时前
[精选] 2025最新MySQL和PostgreSQL区别、迁移、安全、适用场景全解析
运维·数据库·mysql·安全·postgresql·云原生·容器
西门吹雪分身10 小时前
K8S之Ingress
java·容器·kubernetes·k8s
fyakm13 小时前
Kubernetes(K8s)从入门到精通全攻略
云原生·容器·kubernetes
eddy-原13 小时前
三节点部署K8S(超级简单+详细步骤)
云原生·容器·kubernetes
脸先着地天使13 小时前
KK+KubeSphere实战:从零搭建生产级K8s集群的5个关键配置陷阱
kubernetes·kubesphere·集群部署·生产环境
羑悻的小杀马特13 小时前
从虚拟化基石到云原生架构的降维打击:用dd/mkfs玩转namespace隔离,解锁Docker/K8S资源密码,看透物理机到云服务器的进化之路
docker·云原生·架构·namespace
小小工匠14 小时前
极客防御美学:在微服务架构中落地 PoW 工作量证明与防重放机制
微服务·云原生·架构·pow
小义_15 小时前
【Kubernetes】(二)k8s基础
linux·云原生·k8s
糟糕喔16 小时前
k8s集群部署(Ubuntu22.04)
云原生·容器·kubernetes
山北雨夜漫步16 小时前
Docker
运维·docker·容器