使用配置服务器干净地部署Spring boot微服务

使用配置服务器干净地部署Spring boot微服务,spring,spring-boot,kubernetes,configserver,Spring,Spring Boot,Kubernetes,Configserver,我们已经配置了一个kubernetes集群,在这里我们使用SpringBoot部署了各种服务,我们有一个服务就是SpringCloudConfigServer 我们的问题是,当我们启动集群时,所有服务都会尝试连接到配置服务器以下载配置,而且由于配置服务器尚未启动,所有服务都会失败,导致kubernetes重试初始化并消耗大量资源,从而使配置服务器自身无法启动 我们想知道是否有一种方法可以初始化所有服务,使其不会过载集群,或者让它们有节奏地等待配置服务器启动。到目前为止,所有服务都会启动,我们必须

我们已经配置了一个kubernetes集群,在这里我们使用SpringBoot部署了各种服务,我们有一个服务就是SpringCloudConfigServer

我们的问题是,当我们启动集群时,所有服务都会尝试连接到配置服务器以下载配置,而且由于配置服务器尚未启动,所有服务都会失败,导致kubernetes重试初始化并消耗大量资源,从而使配置服务器自身无法启动

我们想知道是否有一种方法可以初始化所有服务,使其不会过载集群,或者让它们有节奏地等待配置服务器启动。到目前为止,所有服务都会启动,我们必须等待大约20分钟,直到集群工作完毕

提前感谢

您可以使用ping为服务器进行ping操作,直到服务器联机。例如:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: web
  replicas: 1
  template:
    metadata:
      labels:
        app: web
    spec:
      initContainers:
      - name: wait-config-server
        image: busybox
        command: ["sh", "-c", "for i in $(seq 1 300); do nc -zvw1 config-server 8080 && exit 0 || sleep 3; done; exit 1"]
      containers:
      - name: web
        image: my-mage
        ports:
        - containerPort: 80
          ...

在本例中,我使用一个命令ping服务器,但您也可以使用wget、curl或任何最适合您的命令。

它们有多种选项可以执行相同的操作。选择最适合您的:

  • 您也可以尝试将Livelity probe或readiness probe应用于 配置服务器。通过这种方式,所有容器都可以等待 配置服务器已启动并正在运行,然后尝试与 配置服务器
  • 您可以使用领事服务作为3个或5个服务的法定人数运行, 并设计客户端连接到领事并等待 配置服务器已启动并正在运行
  • 您可以编写一个启动脚本来触发连接 使用配置服务器建立并发布它可以启动 容器