1

GCPのKubernetesエンジンでデプロイメントとサービスを作成すると、明白な理由で接続が拒否されます。KubernetesのGCP LoadBalancerへの接続が拒否されました

サービスはGCPにロードバランサを作成し、対応するすべてのファイアウォールルールが適用されています(ポート80へのトラフィックは0.0.0.0/0から許可されます)。基礎となるサービスはうまく動いています。kubectl execをポッドに入れて、curl localhost:8000/私は正しい応答を得ます。

この展開他のイメージのためにうまく動作するために使用された設定が、昨日と今日、私は

curl: (7) Failed to connect to 35.x.x.x port 80: Connection refused

は何問題である可能性があり続けるの?私は、サービスを何度も削除して再作成しようとしました。

kind: Service 
apiVersion: v1 
metadata: 
    name: my-app 
spec: 
    selector: 
    app: app 
    type: LoadBalancer 
    ports: 
    - protocol: TCP 
    port: 80 
    targetPort: 8000 
--- 
apiVersion: apps/v1beta2 
kind: Deployment 
metadata: 
    name: my-app 
spec: 
    replicas: 1 
    selector: 
    matchLabels: 
     app: app 
    template: 
    metadata: 
     labels: 
     app: app 
    spec: 
     containers: 
     - name: my-app 
     image: gcr.io/myproject/my-app:0.0.1 
     imagePullPolicy: Always 
     ports: 
     - containerPort: 8000 

答えて

1

これは私のところでは間違っていることが判明しました。砲弾サーバーは0.0.0.0の代わりに127.0.0.1へのバインドを使用していたので、ポッドの外側からはアクセスできませんでしたが、exec -edをポッドに入れたときに機能しました。

私の場合の修正では、Dockerファイルのエントリポイントが CMD [ "gunicorn", "server:app", "-b", "0.0.0.0:8000", "-w", "3" ] に変更され、展開が更新されました。

+0

ちょっと@ robert-lacok!どのように問題を解決したかについてもう少し詳しく説明できますか?再導入する必要がありましたか?設定を編集するだけですか? – Nigini

0

サービスはポッドにバインドされていますか? 「kubectlがmy-appを記述する」とは何ですか?

正しいポートのポッドに転送されていることを確認しますか?また、GCP上のインスタンスを使用していると仮定して、ポッドのIPとポートをカールさせて、それが応答していることを確認することもできます。 8000作品:

すなわち、ポッドが広い-o取得kubectl、ポッド

のIPはカールipofpodを行うことを教えてくれますか?

+0

正常にバインドされているようですが、ポッドのIPはエンドポイントに表示されます。 ipofpod:portをカールすると、同じネットワーク内のGKEノードまたはVM内から同じエラーが発生し、接続が拒否されます。 –

+0

ポッドにpingを実行できますか? –

+0

VMにファイアウォールのルールがあると思いますか? –

関連する問題