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

相关推荐
有脚就行31 分钟前
第33篇-KServe推理平台-标准化的K8s推理服务管理
人工智能·云原生·容器·kubernetes
名字还没想好☜1 小时前
Kubernetes StatefulSet 实战:为什么数据库不能用 Deployment 部署
数据库·云原生·容器·kubernetes·statefulset
欧阳天羲1 小时前
全屋智能家居一体化方案‑配套资料文档合集
云原生·eureka·智能家居
陈聪.2 小时前
Docker 核心知识整理:从入门到企业级应用
运维·docker·容器
云原生指北2 小时前
Docker Sandboxes 的隔离例外:共享 Skills 与宿主机 MCP
运维·docker·ai·容器·agent
瞬间&永恒~3 小时前
【Kubernetes】(七)Kubernetes控制器
云原生·容器·kubernetes
李少兄4 小时前
Kubernetes Pod 状态全解析:从 Phase 到 CrashLoopBackOff
云原生·容器·kubernetes
suijishengchengde4 小时前
k8s deployment或statefulset分组关停
运维·kubernetes
张洛闻Eren4 小时前
云原生k8s【第二课】:K8s 部署与架构
云原生·架构·kubernetes
用户6919026813394 小时前
Docker基本概念
后端·docker·容器