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

相关推荐
东方隐侠安全团队-千里12 小时前
Docker青龙面板挖矿入侵事件应急复盘
运维·docker·容器
猫头虎13 小时前
Docker 安装 OpenClaw 报错排查完全手册(续):如何解决pairing required,`EACCES: permission denied`Docker 拉取镜像提示 `denied
运维·docker·容器·开源·github·aigc·ai编程
A-刘晨阳1 天前
【Prometheus】Alertmanager配置钉钉告警
运维·云原生·钉钉·prometheus·监控
@PHARAOH1 天前
HOW - Moleculer 微服务构建分布式服务系统
微服务·云原生·架构
merlin-mm1 天前
GPU 间的通信方式
云原生·容器·kubernetes
编码如写诗1 天前
【k8s】arm架构从零开始在线/离线部署k8s1.34.5+KubeSphere3.4.1
arm开发·架构·kubernetes
徐子元竟然被占了!!1 天前
docker-dockerfile练习
运维·docker·容器
Malone-AI1 天前
docker换镜像源(docker desktop)
docker·容器
天涯明月19931 天前
微服务架构实战指南:从理论到实践
微服务·云原生·架构
qhqh3101 天前
k8s的service、ingress controller和ingress
云原生·容器·kubernetes