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

相关推荐
是店小二呀7 分钟前
Docker部署EasyNode+内网穿透:轻松实现服务器远程管理
服务器·docker·容器
一招定胜负8 分钟前
在 Windows 11 家庭版安装 Docker Desktop解决虚拟化问题
运维·docker·容器
i建模15 分钟前
Docker API 版本冲突问题
运维·docker·容器
小义_24 分钟前
【RH134总结】 八
linux·运维·服务器·云原生·红帽
gordon~91 小时前
docker镜像安装
运维·docker·容器
another heaven1 小时前
【软考 单体式系统与微服务系统】
微服务·云原生·架构
优雅的造轮狮10 小时前
WSL2 Docker Desktop配置优化及迁移D盘指南
运维·docker·容器
西柚00111 小时前
Ubuntu22.04.5 + Docker + MySQL 5.7
mysql·docker·容器
Sean‘12 小时前
AKS 集群离线部署 kube-state-metrics 文档
运维·docker·容器
万象.13 小时前
docker存储卷分类与实操
docker·容器