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

相关推荐
HPYON43 分钟前
【docker】CentOS安装docker失败,一直提示yum没有docker仓库
docker·容器·centos
ldj20202 小时前
docker 容器打包备份与镜像迭代更新
docker·容器
fandroid2 小时前
树莓派通过docker安装kodbox可道云
运维·docker·容器
MZWeiei4 小时前
docker save/load VS docker export/import
docker·容器
❀͜͡傀儡师5 小时前
Docker安装SQL Server并使用Navicat远程连接
运维·docker·容器
yewq-cn8 小时前
自动更新 Docker 镜像
运维·docker·容器
我还为发觉9 小时前
Docker在系统运维中的应用与实现原理
运维·docker·容器
特立独行的猫a10 小时前
使用Docker/Docker Compose方式安装部署PostgreSQL指南
docker·postgresql·容器
深盾科技11 小时前
Docker 常用命令速查表
运维·docker·容器
H²D11 小时前
真!docker离线部署GLPI资产管理系统
docker·容器·webview