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

相关推荐
Stewie121387 小时前
Docker 面试题
运维·docker·容器
vpk1128 小时前
Docker Compose 安装 Redis
redis·docker·容器
没有bug.的程序员9 小时前
Serverless 弹性扩容引发的全线熔断:Spring Boot 启动耗时从 1s 压缩至 0.3s 的物理级绞杀
java·spring boot·kubernetes·serverless·扩容·线上
last demo10 小时前
Docker-compose和图形界面管理
docker·容器·eureka
好像不对劲11 小时前
【docker】win10 wsl docker不能挂GPU
运维·docker·容器·wsl
Bonnie37312 小时前
云边端一体化解析-什么是云边端,为何能成为AI基础设施核心
人工智能·程序人生·云原生·个人开发
江畔何人初12 小时前
Docker、containerd、CRI、shim 之间的关系
运维·docker·云原生·容器·kubernetes
万象.14 小时前
docker镜像仓库
运维·docker·容器
2401_8916558114 小时前
Git + 云原生:如何管理K8s配置版本?
git·云原生·kubernetes
2401_8442213215 小时前
深入理解K8s中的应用服务:访问、集群与配置
容器·kubernetes·php