web-dev-qa-db-ja.com

Kubernetes GCE Ingressがサービスを見つけられない

さまざまなデプロイ、サービス、イングレス用のyamlファイルは、以前に動作する設定を作成しました。 Ingressの小さな問題を修正しようとしましたが、動作状態に戻ることができません。

ポッドはエラーなしで起動し、サービスは稼働しています。ログにはヘルスチェックエントリがないため、問題はサービスに名前でアクセスすることにあるようです。 Ingressを作成すると、GKEインターフェースにこのイベントが表示されます(kubectl describeを使用しているときではありません)。

Error during sync: error while evaluating the ingress spec: could not find service "default/web";

サービスは確かにアップしています:

NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
elasticsearch   ClusterIP   None            <none>        9200/TCP,9300/TCP            5h
kubernetes      ClusterIP   10.31.x.x       <none>        443/TCP                      5h
redis-master    ClusterIP   10.31.x.x       <none>        6379/TCP                     5h
web             NodePort    10.31.x.x       <none>        80:30110/TCP,443:31404/TCP   5h
websocket       NodePort    10.31.x.x       <none>        28080:30186/TCP              5h

サービスを再起動してnginxイングレスに変更してみました。私が残している唯一のアイデアは、クラスターを核攻撃することです。 k8s内部DNSが壊れているかのようです。

2
Archonic

私はRailsアプリが実行されていました。force_ssl Rails=構成です。これは、httpリクエストをhttpsにリダイレクトすることだけだと思っていましたが、これにより、サービスを提供しているポートがリセットされることがわかりました。ポートを指定する必要があるのは、 force_sslを有効にする場合: https://github.com/Rails/rails/issues/1982

ポート3000は200で応答しなくなったため、他に問題がないにもかかわらず、そのサービスは異常とマークされました。

2
Archonic