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

相关推荐
HelloWorld_SDK5 小时前
Docker安装OpenClaw
运维·docker·容器·openclaw
刘~浪地球10 小时前
云原生与容器--Kubernetes 生产环境部署实战
云原生·容器·kubernetes
cyber_两只龙宝11 小时前
【Docker】Docker的资源限制
linux·运维·服务器·docker·云原生·容器
XDHCOM11 小时前
Docker怎么设置Redis?
redis·docker·容器
Flying pigs~~12 小时前
检索增强生成RAG项目tools_01:Docker 极简实战
运维·人工智能·docker·容器·大模型·agent·rag
升职佳兴15 小时前
重启 Docker 导致 VMware 虚拟机断网:一次完整的故障排查记录
运维·docker·容器
HYNuyoah15 小时前
docker网站配置迁移(旧换新)
java·docker·容器
cyber_两只龙宝17 小时前
【Oracle】Oracle之SQL中的单行函数
linux·运维·数据库·sql·云原生·oracle
说实话起个名字真难啊17 小时前
Docker 入门之overlay网络
网络·docker·容器