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

相关推荐
@土豆14 小时前
基于Docker部署Squid正向代理文档
运维·docker·容器
Cyber4K14 小时前
【Kubernetes专项】K8s 包工具- Helm 入门到企业实战
云原生·容器·kubernetes
观无16 小时前
微服务下的跨域问题
微服务·云原生·架构
Chuncheng's blog16 小时前
K8S二进制部署exec unable to upgrade connection: Unauthorized异常解决方案
云原生·容器·kubernetes
FJW02081417 小时前
HAProxy+Keepalived实现Kubernetes高可用集群部署
云原生·容器·kubernetes
正经教主17 小时前
【docker基础】第二课:安装、配置与基础命令
docker·容器·eureka
倔强的胖蚂蚁17 小时前
云原生服务器存储规划与磁盘选型实施
运维·服务器·云原生
观无17 小时前
微服务架构核心技术知识全景总结
微服务·云原生·架构
@土豆18 小时前
【混合云组网实战】Docker部署内网互通服务,实现本地网段访问公有云VPC私网
运维·docker·容器
merlin-mm18 小时前
volcano 原理分析
容器·kubernetes