1

Spring Boot を使用してさまざまなサービスを展開する kubernetes クラスターを構成しました。Spring Cloud Config Server という 1 つのサービスがあります。

私たちの問題は、クラスターを開始すると、すべてのサービスが構成サーバーに接続して構成をダウンロードしようとすることです。構成サーバーがまだ開始されていないため、すべてのサービスが失敗し、kubernetes が初期化を再試行し、多くのリソースを消費します。構成サーバー自体を起動できません。

クラスターに過負荷をかけないように、または構成サーバーが起動するまでゆっくりと待機するように、すべてのサービスを初期化する方法があるかどうか疑問に思っています。現在、すべてのサービスが開始されており、クラスターが正常に機能するまで 20 分ほど待たなければなりません。

前もって感謝します

4

2 に答える 2

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
          ...

この例では、サーバーへの ping にncコマンドを使用していますが、wget や curl など、自分に最適なものを使用することもできます。

于 2019-03-18T17:05:35.333 に答える