1

次の K8s リソース (デプロイ/ポッド、サービス、イングレス) がある場合https://staging-micro.local/、ブラウザーでアクセスすると、リクエストがエコー バックされることを期待しています。代わりに得られるのは502 Bad Gateway.

# describe deployment (trunc. to show only containers)
Containers:
   cloudsql-proxy:
    Image:      gcr.io/cloudsql-docker/gce-proxy:1.11
    Port:       <none>
    Host Port:  <none>
    Command:
      /cloud_sql_proxy
      -instances=myproject:us-central1:project-staging=tcp:5432
      -credential_file=/secrets/cloudsql/credentials.json
    Environment:  <none>
    Mounts:
      /secrets/cloudsql from cloudsql-instance-credentials-volume (ro)
   adv-api-django:
    Image:      gcr.io/google_containers/echoserver:1.9
    Port:       8000/TCP
    Host Port:  0/TCP
    Environment:


# describe service
Name:                     staging-adv-api-service
Namespace:                staging
Labels:                   app=adv-api
                          platformRole=api
                          tier=backend
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"adv-api","platformRole":"api","tie...
Selector:                 app=adv-api-backend,platformRole=api,tier=backend
Type:                     LoadBalancer
IP:                       10.103.67.61
Port:                     http  80/TCP
TargetPort:               8000/TCP
NodePort:                 http  32689/TCP
Endpoints:                172.17.0.14:8000,172.17.0.6:8000,172.17.0.7:8000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>


# describe ingress
Name:             staging-api-ingress
Namespace:        staging
Address:          10.0.2.15
Default backend:  default-http-backend:80 (172.17.0.12:8080)
Rules:
  Host                 Path  Backends
  ----                 ----  --------
  staging-micro.local  
                       /   staging-adv-api-service:http (172.17.0.14:8000,172.17.0.6:8000,172.17.0.7:8000)

ホスト マシン (minikube を実行) にエントリ192.168.99.100 staging-micro.localがあり、それが正しいことに注意してください。サービスを削除すると、ヒットするとデフォルトのバックエンドの応答が返されます。/etc/hostsminikube ipstaging-micro.local/404 Not Found

私の予想では、Ingress は、ポート 80 でリッスンしているサービスへのホスト名staging-micro.localとパスをマップし/ます。次に、サービスは、ポート 8000 で選択された 3 つのコンテナーの 1 つに要求を転送します。echoserver コンテナーは、ポート 8000 でリッスンします。 Request を本文として HTTP Response を返します。もちろん、これは実際に起こることではありません。

最後に、cloudsql-proxyコンテナー: これは現時点では関係ありませんが、サイドカー コンテナーが存在する場合にサービスが機能することを検証したかったので含めます。echoserver次に、メインのアプリケーション コンテナーを交換します。echoserver私は削除してテストしましたが、同じ結果が得られました。

ログは、echoserverがエラーなしで起動していることを示しています。

より包括的なドキュメントを見つけることができなかったechoserverので、リッスンしているポートについて 100% ではありません。

4

1 に答える 1