セットアップ:2つのノードと1つの入力を備えたDigitalOcean K8Sクラスター-NGINXLoadBalancer(特別な構成なし)
証明書要求が失敗し、チャレンジのログでセルフチェックGET要求がタイムアウトになるのはなぜだろうと思っていました。
Waiting for http-01 challenge propagation: failed to perform self check GET request 'http...'
... dial tcp PUBLIC_LOADBALANCE_IP:80 connect: connection timed out
よく調べてみると、curlリクエストを実行しようとすると実行中のポッド内からLoadBalancerパブリックIPに、LoadBalancerが現在実行しているノードで実行されているポッドのみを指していません)リクエストを成功させることができます。他のノードで実行されているポッドからの他のすべてのリクエストはタイムアウトになります。
何かアドバイス?
編集:
さらに掘り下げた後、ingress-nginxサービスで「externalTrafficPolicy」を設定していることがわかりました。
externalTrafficPolicy: Local
に
externalTrafficPolicy: Cluster
問題が解決したようです。これで、すべてのポッドからのリクエストは、実行中のノードに関係なく、正常にリクエストを行うことができます。それは私を別の質問に導きます:
私はこれを設定する何かを逃しましたか?そうでなければ、ドキュメントもチュートリアルもこの潜在的な問題のヒントを提供しない理由がわかりません。
セットアップ中に何も見逃していません。
issue この動作を報告しており、説明した内容と非常によく似ています。残念ながら、この問題はまだ解決されていないため、この問題の解決策はまだありません。
唯一の可能性は、externalTrafficPolicy
をLocal
からCluster
に変更する回避策を使用することです。