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

相关推荐
http阿拉丁神猫13 小时前
kubernetes知识点汇总43-47
云原生·容器·kubernetes
迷藏49414 小时前
**发散创新:基于角色与属性的混合权限模型在微服务架构中的实战落地**在现代分布式系统中,
java·python·微服务·云原生·架构
张32314 小时前
Kubernetes服务发现
云原生·kubernetes
七七powerful14 小时前
K8s 工具安装文档 — Harbor + ArgoCD
容器·kubernetes·argocd
立莹Sir14 小时前
云原生实战:从零搭建企业级K8s环境
云原生·容器·kubernetes
立莹Sir14 小时前
云原生全解析:从概念到实践,Java技术栈如何拥抱云原生时代
java·开发语言·云原生
modelmd14 小时前
Docker 重命名数据卷
运维·docker·容器
Skilce14 小时前
K8S部署
linux·运维·服务器·容器·kubernetes
张32314 小时前
kubernetes Pod难点
云原生·容器·kubernetes
qq24392016114 小时前
ubuntu搭建k8s 1.35版本
云原生·容器·kubernetes