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

相关推荐
你的坚持终将美好,13 分钟前
Docker 中一起启动多个容器脚本
docker·容器
像风一样自由202014 分钟前
Docker 与 Docker Compose:从零开始的容器化之旅
运维·docker·容器
北珣.19 分钟前
docker镜像操作
运维·docker·容器·镜像
Sally_xy1 小时前
安装 Docker
java·docker·容器
拾忆,想起1 小时前
Dubbo动态服务发现配置指南:从基础到云原生实践
服务器·网络·微服务·云原生·架构·服务发现·dubbo
❥ღ Komo·1 小时前
K8S Deployment 详解与实战指南
docker·容器·kubernetes
CNRio1 小时前
第二章-镜像深度解析:Docker的‘千层蛋糕‘魔法
运维·docker·容器
哦你看看2 小时前
K8S-Pod资源对象
java·容器·kubernetes
泻水置平地3 小时前
Docker下安装ES和kibana详细教程
elasticsearch·docker·容器
我不是8神3 小时前
Docker知识点总结
运维·docker·容器