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

相关推荐
D愿你归来仍是少年1 小时前
Docker 基础入门指南
docker·容器
一只小bit2 小时前
技术架构演进之路:从单体应用到Docker容器编排
docker·容器·架构
掘根2 小时前
【微服务即时通讯】语言识别子服务
微服务·云原生·架构
sszdzq3 小时前
docker 安装 Nginx
nginx·docker·容器
Stark-C3 小时前
专为NAS用户打造的导航页,支持Docker管理,极空间部署FlatNas
运维·docker·容器
@土豆4 小时前
K8s 单机二进制部署步骤(复制粘贴即可)
云原生·容器·kubernetes
wxjlkh14 小时前
5分钟部署Docker!Rocky Linux极速安装+一键加速配置脚本
云原生·eureka
丈剑走天涯14 小时前
kubernetes java app 部署使用harbor私服 问题集合
java·容器·kubernetes
Jinkxs16 小时前
Java 部署:滚动更新(K8s RollingUpdate 策略)
java·开发语言·kubernetes
lpfasd12317 小时前
Kubernetes (K8s) 底层早已不再直接使用 Docker 引擎了
java·docker·kubernetes