web-dev-qa-db-ja.com

GKE Ingressが正常なサービスに接続できない

私はここでチュートリアルに従っています: https://medium.com/@nithinmallya4/deploying-a-Rails-application-to-google-container-engine-with-kubernetes-b08b2de353fc

彼らのコードベースで: https://github.com/nmallya/gkedemoapp

このデプロイがどのようにまとめられているかは、「初回デプロイ」のコメントの間に表示されています。 https://github.com/nmallya/gkedemoapp/blob/master/gcloud_deployment.sh

SSL証明書を作成しました。Webサービスは稼働しており、正常ですが、説明したように入力を作成できません。 Ingressのステータスは「すべてのバックエンドサービスがUNHEALTHY状態です」です。

イングレスのYAMLは次のとおりです。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gke-ingress 
  annotations:
    kubernetes.io/ingress.class: "gce"
    # kubernetes.io/ingress.allow-http: "false"
    # ingress.kubernetes.io/ssl-redirect: "true"
spec:
  tls:
  # This assumes tls-secret exists.
  - secretName: gkecert
  backend:
    serviceName: web
    servicePort: 443

さらに情報を提供する必要があると思いますが、次に何をどこでトラブルシューティングするかわかりません。

1
Archonic

私のサービスは健全な状態ではなかったことがわかりました。 「READY」であっても、ルートパス(/)で200で応答しているという意味ではありません。 kubectl get podsを使用してポッドを一覧表示し、ログを検査しました。

NAME                            READY     STATUS    RESTARTS   AGE
cable-76bfb45bb-rkz8f           2/2       Running   0          24m
Rails-67d569746d-54hs8          2/2       Running   0          24m
elasticsearch-0                 1/1       Running   0          16m
redis-master-945b795f6-ldg5x    1/1       Running   0          14h
sidekiq-597c876bc4-zg24k        2/2       Running   0          24m

次に、kubectl logs Rails-67d569746d-54hs8 Railsを使用して特定のログを検査できます。2番目のRailsは、ポッド内のコンテナーの名前です。ヘルスチェックのログが表示され、何が問題かを示しているはずです。

サーバーの起動のみが表示され、ヘルスチェックログが表示されない場合は、ポッドに到達できない可能性があります。サービスとそれらのポートを確認してください。それらが到達可能であり、ルートパスで200で(リダイレクトではなく)応答している限り、ヘルスチェックはパスし、イングレスは接続を許可する必要があります。

2
Archonic