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

相关推荐
俗世慵人20 分钟前
docker随笔
docker·容器·eureka
Brandon汐23 分钟前
HAProxy+Keepalived+MariaDB+tomcat+Prometheus+Grafana高可用部署
云原生·tomcat·grafana·prometheus·mariadb·keepalived·haproxy
小李小李快乐不已1 小时前
docker(2)容器管理与镜像操作
运维·c++·docker·容器
XMYX-01 小时前
Docker 未映射端口 两种无需重启容器的访问方法
docker·容器·socat
斯普信专业组1 小时前
Kubeasz快速部署高可用k8s集群入门到实战
云原生·容器·kubernetes
a里啊里啊1 小时前
Docker安装全流程-包括修改默认安装路径
运维·docker·容器
zfoo-framework1 小时前
minikube+docker desktop搭建k8s环境部署SpringBoot应用(仅仅是玩玩,端口映射很麻烦)
运维·docker·容器
会飞的大可3 小时前
Docker 企业级镜像构建与安全实践
安全·docker·容器
维度攻城狮14 小时前
Docker优雅地运行OpenClaw
运维·docker·容器·openclaw·openclaw安装
AI攻城狮15 小时前
OpenClaw Exec Approvals 机制:在安全与效率之间寻找平衡
人工智能·云原生·aigc