Kubernetes - 他のポッドの準備が整うまで待つ 質問する

Kubernetes - 他のポッドの準備が整うまで待つ 質問する

2つのアプリケーションがあります -アプリ1そしてアプリ2、 どこアプリ1は、config server設定を保持するアプリ2/readinessエンドポイントを定義しましたアプリ1OKポッドを起動するにはステータスが返されるまで待つ必要がありますアプリ2

の導入は非常に重要ですアプリ2からkubernetes受け取るまで待つHttp Status OK/準備エンドポイントアプリ1これは構成サーバーであり、app2 の重要な構成を保持します。

このようなデプロイメント依存関係を実現することは可能ですか?

ベストアンサー1

使用できますinitContainersYAML以下はファイル内で実行する方法の例です

initContainers:
- name: wait-for-other-pod
  image: docker.some.image
  args:
  - /bin/sh
  - -c
  - >
    set -x;
    while [ $(curl -sw '%{http_code}' "http://www.<your_pod_health_check_end_point>.com" -o /dev/null) -ne 200 ]; do
      sleep 15;
    done

curlヘルスチェックエンドポイントにアクセスするために使用しましたが、他のポッドの準備ができているかどうかを確認するには、他の UNIX コマンドを使用できます。

k8sリソースに依存している場合は、以下を利用できます。スタックアネット/kubernetes-エントリポイント例:

initContainers:
- command:
  - kubernetes-entrypoint
  name: init-dependency-check
  env:
  - name: POD_NAME
    valueFrom:
      fieldRef:
        apiVersion: v1
        fieldPath: metadata.name
  - name: NAMESPACE
    valueFrom:
      fieldRef:
        apiVersion: v1
        fieldPath: metadata.namespace
  - name: DEPENDENCY_SERVICE
  - name: DEPENDENCY_DAEMONSET
  - name: DEPENDENCY_CONTAINER
  - name: DEPENDENCY_POD_JSON
    value: '[{"labels":{"app.kubernetes.io/name":"postgres"}}]'
  - name: COMMAND
    value: echo done
  image: projects.registry.vmware.com/tcx/snapshot/stackanetes/kubernetes-entrypoint:latest
  securityContext:
    privileged: true
    runAsUser: 0

上記の例では、initContainer のポッドは、init-dependency-checkラベルの付いたポッドが実行状態になるまで待機します。同様に、、、"app.kubernetes.io/name":"postgres"を利用することもできます。DEPENDENCY_SERVICEDEPENDENCY_DAEMONSETDEPENDENCY_CONTAINER

おすすめ記事