2016-09-02 8 views
11

ロードバランサのチュートリアル:https://cloud.google.com/container-engine/docs/tutorials/http-balancerは、Nginxイメージを使用すると正常に動作しています。私は自分のアプリケーションイメージを使用しようとしていますが、バックエンドは不健全になります。kubernetes不健全なイングレスバックエンド

私のアプリケーションは、(302を返す)/上のリダイレクトが、私はポッドの定義でlivenessProbeを追加しました:

livenessProbe: 
     httpGet: 
     path: /ping 
     port: 4001 
     httpHeaders: 
      - name: X-health-check 
      value: kubernetes-healthcheck 
      - name: X-Forwarded-Proto 
      value: https 
      - name: Host 
      value: foo.bar.com 

のように私の進入が見えます:サービスの設定がある

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: foo 
spec: 
    backend: 
    serviceName: foo 
    servicePort: 80 
    rules: 
    - host: foo.bar.com 

kind: Service 
apiVersion: v1 
metadata: 
    name: foo 
spec: 
    type: NodePort 
    selector: 
    app: foo 
    ports: 
    - port: 80 
     targetPort: 4001 

Backends health in ingress describe ingのようになります。

backends:  {"k8s-be-32180--5117658971cfc555":"UNHEALTHY"} 

など侵入の外観上のルール:

Rules: 
    Host Path Backends 
    ---- ---- -------- 
    * * foo:80 (10.0.0.7:4001,10.0.1.6:4001) 

大幅受信任意のポインタ、私は運と時間のためにこれをうまくしようとしてきました。

更新

私は私の展開にreadinessProbeを追加したが、何かがまだヒットするように見える/及び侵入はまだ不健康です。私はそれが仕事を始めreadinessProbeからカスタムヘッダーを取り除いた後、アップデート2

kind: Service 
apiVersion: v1 
metadata: 
    name: foo 
spec: 
    type: NodePort 
    selector: 
    app: foo 
    ports: 
    - port: 4001 
     targetPort: 4001 

を:私のプローブは次のようになります。

readinessProbe: 
     httpGet: 
     path: /ping 
     port: 4001 
     httpHeaders: 
      - name: X-health-check 
      value: kubernetes-healthcheck 
      - name: X-Forwarded-Proto 
      value: https 
      - name: Host 
      value: foo.com 

私はに私のサービスを変更しました!どうもありがとう。

答えて

16

あなたはreadinessProbeを追加する必要があります(あなたのlivenessProbeをコピーするだけです)。

GCE L7 Ingress Docsで説明しています。

健康

をチェックし、現在、すべてのサービスのバックエンドは、GCEロードバランサーからそれに送られたHTTPヘルスチェックに合格するために、次の要件のいずれかを満たしている必要があります。「/」で200 1.応答します。内容は重要ではありません。 2.サービスをバックアップするポッド上の準備プローブとして任意のURLを公開します。

また、readinessProbeがIngressに公開されているのと同じポートを指していることを確認してください。ポートが1つしかないので問題ない場合は、別のポートを追加すると問題が発生する可能性があります。

+0

元のコメントを更新しました –

+0

私は同じ問題、あなたの答え、そして答えをここに加えました:http://stackoverflow.com/questions/42967763/kubernetes-ingress-gce-keeps-returning-502-エラー/ 42971328は私がこれを解決するのを助けた – GrandVizier

0

私は同じ問題を抱えていました。テックスのヒントに続いて、そのメッセージが続きました。サービスの状態を検証するために、私は入室前に数分待たなければならなかったことが分かります。誰かが同じ方向に行き、readinessProbelinvenessProbeのようなすべての手順を実行した場合は、入力がNodePortのサービスを指していることを確認し、黄色の警告アイコンが緑色に変わるまで数分間待ちます。また、StackDriverのログをチェックして、何が起こっているのかを知ることができます。

関連する問題