使用Config Server干净部署Spring Boot微服务

时间:2019-03-18 16:41:50

标签: spring spring-boot kubernetes configserver

我们已经配置了一个kubernetes集群,其中我们使用Spring Boot部署了各种服务,而我们有一个服务就是Spring Cloud Config Server。

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

我们想知道是否有一种方法可以初始化所有服务,而不会使集群超载,或者使它们迅速等待配置服务器启动。到目前为止,所有服务都已启动,我们必须等待大约20分钟,直到群集正常工作。

预先感谢

2 个答案:

答案 0 :(得分:2)

您可以使用Init Containers 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
          ...

在此示例中,我使用nc命令对服务器执行ping操作,但您也可以使用wget,curl或最适合您的命令。

答案 1 :(得分:1)

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

  1. 您也可以尝试将“活力”探针或“就绪”探针应用于 配置服务器。这样,所有容器都可以等到 配置服务器已启动并正在运行,然后尝试与 配置服务器。
  2. 您可以使用以3或5个服务定额运行的领事服务, 并设计客户连接到领事,直到 配置服务器已启动并正在运行。
  3. 您可以编写启动脚本将触发连接 与配置服务器建立并发布它可以启动 容器。