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

相关推荐
江畔何人初7 小时前
iptables 和 IPVS 代理模式 Service 的区别
linux·运维·服务器·网络·云原生·kubernetes·代理模式
Brandon汐16 小时前
LVS+Keepalived 双主架构全规划(LVS→HAProxy→Web)
容器·架构·lvs
Doker 多克17 小时前
Kubernetes 之Deployments
kubernetes
小猿姐17 小时前
当KubeBlocks遇上国产数据库之Kingbase:让信创数据库“飞得更高”
运维·数据库·云原生
hyunbar18 小时前
Docker命令及使用指南
运维·docker·容器
会飞的大可19 小时前
WMS系统演进——从单体到微服务
微服务·云原生·架构
yuweiade21 小时前
docker desktop安装redis
redis·docker·容器
huabiangaozhi21 小时前
Docker:基于自制openjdk8镜像 or 官方openjdk8镜像,制作tomcat镜像
docker·容器·tomcat
cyber_两只龙宝21 小时前
【Docker】Dockerfile构建镜像实验全流程详解
linux·运维·docker·云原生
人间打气筒(Ada)21 小时前
「码动四季·开源同行」docker容器单机编排docker-compose
运维·docker·容器·docker-compose·容器编排·批量·docker compose