現在、GKE(k8s 1.2)でIngressを構成して、アプリケーションのポッドにリクエストを転送しています。長い時間(秒)とアプリケーションからのタイムアウト(504)がかかる可能性のあるリクエストがあります。そうするとき、私が受け取る応答は、私自身の504ではなく、6秒後にGoogleロードバランサーのように見えるものからの502であることがわかります。
私はさまざまなステータスコードと期間を試してみましたが、ちょうど30秒後に、発行されたステータスコードに関係なく、この奇妙な動作を受け取り始めました。
誰かが私がこれを修正する方法の手がかりを持っていますか?この動作を再構成する方法はありますか?
GKEで入力を作成する場合、デフォルトの設定では、指定したバックエンドを使用してGLBCHTTPロードバランサーが作成されます。デフォルトでは、アプリケーションが要求を処理するために30秒のタイムアウトで構成されます。
より長いタイムアウトが必要な場合は、Googleクラウドコンソールの HTTPロードバランサー のバックエンドでセットアップした後、これを手動で編集する必要があります。
1.11.3-gke.18以降、kubernetesでタイムアウト設定を直接構成できるようになりました。
最初にbackendConfigを追加します。
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: my-bsc-backendconfig
spec:
timeoutSec: 40
次に、このbackendConfigを使用するために、Serviceに注釈を追加します。
apiVersion: v1
kind: Service
metadata:
name: my-bsc-service
labels:
purpose: bsc-config-demo
annotations:
beta.cloud.google.com/backend-config: '{"ports": {"80":"my-bsc-backendconfig"}}'
spec:
type: NodePort
selector:
purpose: bsc-config-demo
ports:
- port: 80
protocol: TCP
targetPort: 8080
そして、ビオラ、入力ロードバランサーのタイムアウトがデフォルトの30秒ではなく40秒になりました。