2017-03-20 5 views
1

kubernetesサービスは3台のマシンで動作しています。クラスタの内部と外部の両方のクライアントは、キープアライブオプションを有効にしてhttpを介してこのサービスと通信します。サービスの展開中、終了ポッドには、シャットダウン開始時に失敗し、サービスエンドポイントリストから適切に削除される準備チェックがありますが、トラフィックはまだ受信されますが、コンテナが突然終了すると失敗するリクエストがあります。これは、ホストがReadyのときに確立されたこれらの接続をクライアントが再利用できるようにするキープアライブが原因であると考えられます。これらの問題にぶつからないようにするために必要な一連の手順はありますか?可能であればキープアライブ接続を許可したいと考えています。keep-aliveが有効な状態でkubernetesサービスの再デプロイエラーを修正する

答えて

1

レイヤ7ではなくレイヤ4でプロキシ/ロードバランシングが発生すると問題が発生します。内部サービス(ClusterIPタイプのKubernetesサービス)では、Kube-proxyがレイヤ4プロキシを使用してプロキシを実行するため、クライアントはポッドが使用できなくなった後も接続を維持してください。同様に、LoadBalancerタイプのサービスの場合、バックエンドタイプがTCP(デフォルトではAWS ELB)に設定されている場合、同じ問題が発生します。詳細についてはthis号をご覧ください。

今のようにこの問題を解決するには、次のとおりです。

  • あなたは雲のロードバランサを使用している場合は、先に行くと、HTTPにバックエンドを設定します。たとえば、kubernetesサービスにservice.beta.kubernetes.io/aws-load-balancer-backend-protocol注釈を追加し、ELBがTCPではなくHTTPプロキシを使用するようにHTTPに設定することができます。
  • クラスタ内のレイヤ7プロキシ/入力コントローラを使用して、トラフィックを送信する代わりにルーティングします。kube-proxy
0

私たちは同じ問題を抱えているので、この問題を回避する方法を見つけたかどうかは疑問です。 this linkによると、ロード・バランサをサービスの前に置くことで、ポッドに直接要求し、自身のキープ・アライブ接続を処理することができます。

私たちは引き続きこの問題を調査し、キープアライブ接続でゼロ停止時間の展開を行う方法が見つかるかどうかを確認します。

関連する問題