ワークロード、サービス、およびサービスにトラフィックをルーティングするNginx入力コントローラーがあります。ポッドが1つしかない限り、すべて問題ありません。レプリカを2に設定してスケールアップすると、APIによって返されるhttpエラーがHTMLページに変換され、エラーとともに返される重要な情報が非表示になります。
APIが戻ったとき:
res.status(502).send('The error is THIS!');
応答に表示されるのは次のとおりです。
<html>
<head>
<title>502 Bad Gateway</title>
</head>
<body bgcolor="white">
<center>
<h1>502 Bad Gateway</h1>
</center>
<hr>
<center>nginx/1.11.3</center>
</body>
</html>
このカスタムエラーの作成をバイパスして、元のエラーメッセージを受信するにはどうすればよいですか?
これは仕様によるものです。複数のバックエンド(サービスエンドポイント)がある場合、ingres-nginxは、バックエンドサービスから502、503、または504の応答ステータスを受信すると、次のバックエンドを試行します。試行するバックエンドがなくなると、カスタムエラーが生成されます。
アノテーションnginx.ingress.kubernetes.io/service-upstream: "true"
を設定すると、nginxの動作が変更され、1つのバックエンドであるk8sクラスターサービスClusterIPを指すようになります。通常、nginxはすべてのサービスエンドポイントをバックエンドサーバーとして管理します。
このアノテーションを使用すると、負荷分散の決定がnginxのロジックではなくKubernetesクラスターサービスルーティングドメインに移動することに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加