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

相关推荐
matlab8889993 小时前
Falco:云原生世界中的安全守护者
其他·安全·云原生
ByteBeacon3 小时前
Argo Workflows:Kubernetes上的工作流引擎
其他·云原生·容器·kubernetes
java_logo4 小时前
Docker 部署 CentOS 全流程指南
linux·运维·人工智能·docker·容器·centos
DarkAthena5 小时前
【Docker】定制化构建一个可以运行GaussDB的kylinv10sp3系统的docker镜像
数据库·docker·容器·gaussdb
daxiang120922055 小时前
k8s高频面试题汇总
云原生·容器·kubernetes
lang201509286 小时前
Spring Boot与K8s集成的核心机制
spring boot·后端·kubernetes
RationalDysaniaer6 小时前
k8s配置与存储
云原生·容器·kubernetes
..Move...11 小时前
Docker镜像制作
运维·docker·容器
行思理17 小时前
Docker 应该如何学习 分四个阶段
学习·docker·容器