Kubernetesイングレス技術選択コントローラで

著者:李恵

リード:ではKubernetesの練習、展開は、ポッドの移行、ノードポッドポート、ドメイン名やその他の問題の動的割り当てを解決するために、進入のための適切なソリューションを選択するために、開発者が必要です。市場には数多くの製品の侵入面、開発者はどのように自分の長所と短所を教えてくれますか?そして、どのように独自の技術スタックは、右の技術オプションを選ぶのか?この記事では、テンセントクラウドは、コアR&Dエンジニア李恵は、技術選択Kubernatesイングレスコントローラを作成する方法を紹介しますミドルウェア。(編集:Qは妹をミドルウェア)

用語集

以下の基本的な概念に精通しているために、この記事の必要性を読みます:

  • クラスタ:クラウドリソースのコレクションはコンテナを実行するために必要な、いくつかのクラウドクラウドリソースサーバーのセット、ロードバランサなどに含まれています。
  • 実施例(POD):同じネットワークおよびストレージ空間を共有する1つ以上の容器に関連付けられたインスタンスで構成される。
  • ワークロード(ノード):Kubernetesリソースオブジェクトは、管理ポッド、自動スケジュールのコピーを作成し、ライフサイクル全体を制御するために使用します。
  • サービス(サービス):同一の構成及びアクセスの複数のインスタンス(POD)は、マイクロサービスからなる実施例(POD)を規則。
  • イングレス:イングレスは、集計、外部HTTP(S)トラフィックがサービス(サービス)のルールにルーティングされるに使用されています。

ステータスKubernetesアクセス

△Kubernetes外部アクセスモード

Kubernetesでは、主に、クラスタ内で使用するためのポッドIPアクセスサービスとサービスは、クラスタ外のためのアプリケーションが表示されません。どのようにこの問題を解決するには?アクセスKubernetesクラスタサービスへの外部アプリケーションを可能にするためには、通常、ソリューションはNodePortとロードバランサです。

実際には、これら二つのプログラムのそれぞれは、いくつかの欠点があります:

  • NodePort欠点は、ポートのみサービスをマウントすることができ、かつ高可用性のために、追加セットの必要性ロードバランサ次第です。
  • ロードバランサの欠点は、内部またはネットワークのIPネットワークのIP外にあるかどうか、各サービスは、独自のIPを持っていなければならないということです。多くの場合、能力のロードバランサを確保するために、一般的に我々は、クラウド・サービス・プロバイダーに依存する必要があります。

Kubernetesの練習では、展開は、ポッドの移行、ノードポッドポート、動的に割り当てられたドメイン名または住所ポッド背景の動的更新のように解決するために、この質問は、イングレス・ソリューションを発生します。

イングレスの選択

nginxの進入の欠点

イングレスは、非常に重要なKubernetes外部ネットワークトラフィックの入り口です。イングレスエリアの商用版を提供nginxの後ろからKubernetesで推奨デフォルト値イングレスnginxのは、それらを区別するために、私はKubernetesイングレス、それを呼び出します。

名前はnginxのベースのプラットフォームを示唆するようKubernetesイングレスは、nginxのは、今世界で最も人気のあるnginxのHTTP Severのですが、私たちは、すべての利点であるnginxの、とあまりにも精通していると信じています。これは、nginxの進入・アクセスの構成は非常に少ないKubernetesクラスタが必要であることも利点であり、そしてあなたがそれを使用する方法を案内する書類がたくさんあります。どのKubernetesや新興企業に新しいほとんどの人々のために、nginxの進入は確かに非常に良い選択です。

nginxの進入は、いくつかの環境で使用する場合でも、多くの問題があるでしょう。

  • 最初の質問:いくつかの機能を持つnginxの進入OpenRestyが、最終的な構成は、負荷または元nginxの設定ファイルのリロードに依存します。ルーティングの設定が非常に大きい場合は、nginxのリロードは真剣にビジネスに影響を与える可能性があり、10秒あるいは数秒までのために、長い時間のために時間がかかり、さらには事業の中断の原因になります。
  • 第二の問題:プラグイン開発nginxの進入が非常に難しいです。あなたはnginxの進入プラグイン自体は十分ではないと思われる場合は、プログラマのためのいくつかのカスタムプラグイン、この追加の開発タスクを使用する必要性は非常に痛いです。nginxの進入独自のプラグイン機能と拡張性は非常に悪いですので。

選択の侵入原則

nginxの進入多くの問題の発見以来、それは他のオープンソースの選択肢とイングレスの活用を検討されていませんか?Kubernetes入入が容易な少なくともダースを使用するよりも、市場では、その後、どのように自分のイングレスそれに非常に多くから選択するには?

イングレスが最終的にHTTPゲートウェイ、HTTPゲートウェイ市場に基づいており、そのいくつかあります:Nginxは、Golangネイティブゲートウェイだけでなく、新特使の台頭。しかし、各開発者のためのさまざまな技術・スタックが得意なので、適したイングレスは異なります。

質問があるので、どのように我々はより便利イングレスそれを選ぶのですか?または狭いポイントnginxのかOpenRestyに精通し、開発者は、イングレスはどれを選ぶべきなのでしょうか?

ここでのIngressコントローラの選択と私の経験のいくつかを教えします。

△選択の原則

基本機能

まず第一に、私は入力コントローラは、これらの機能がない場合であっても、それが直接渡すことができ、これらの基本的な機能を持っているべきだと思います。

  • オープンソースにする必要があり、オープンソースは使用されません。
  • ポッドの変化Kubernetes非常に頻繁に、サービスの発見は非常に重要です。
  • 今、HTTPSは非常に親しまれてきた、TLSまたはSSL機能は、このような証明書管理機能として、また非常に重要です。
  • WebSocketをサポートし、他の一般的なプロトコル、およびいくつかのケースでは、それはまた、サポートHTTP2、QUICその他の契約が必要な場合があります。

基本的なソフトウェア

先に述べたように、誰もが技術プラットフォームで良いですので、より身近なHTTPゲートウェイも重要です選択し、異なっています。例えば、nginxの、HAProxy、特使又はGolangネイティブゲートウェイ。あなたはそれがどのように動作するかに精通しているので、使用中、急激な下落を達成することができます。

本番環境では、高いパフォーマンスが非常に重要な機能であるが、それは可用性よりも重要です。あなたは、その可用性、安定性をゲートウェイを選択することを、この手段は、サービスを安定させるための唯一の方法は非常に強力でなければなりません。

機能要件

上記の二つの点にもかかわらず、それは、同社のビジネスゲートウェイの特別なニーズです。あなたは最高のは確かにボックスの使用可能なうちで、オープンソース製品を選択してください。たとえば、あなたはもちろんのGRPCプロトコル変換、ゲートウェイの選挙は、このような機能を持つことを希望する能力を必要とします。の選択に影響を与える要因についてここでは簡単なコラム:

  • 協定:HTTP2、HTTP3をサポートするかどうか。
  • アルゴリズムロードバランシング:基本的なWRRは、一貫性のあるハッシュロードバランシングアルゴリズムは、需要を満たす、またはアルゴリズムのバランスをとるより複雑なEWMAと同様の負荷を必要とすることができます。
  • カム許可ストリーム:単純な認証、許可、またはより高度な方法。それともすぐにTencentのIMクラウドのような認証機能を開発するために、統合する必要があります。我々は以前のnginxのリロード時間がかかり述べた存在にKubernetesイングレスの添加は、貧しい人々スケーラビリティの問題を差し込み、それはまた、十分な問題柔軟でないバックエンドノード機能の量を調節する権利が存在します。

イングレスコントローラとしてAPISIXを選択

Kubernetes進入比較すると、私は個人的にAPISIXをお勧めします。それは機能的である一方香港ははるかに少ないよりも、しかしAPISIXの良いルーティング機能になり、柔軟な能力のプラグイン、および高パフォーマンス自体は、イングレス選択のいくつかの欠点を補うことができます。nginxのかOpenrestyに基づいて、プログラマが開発のために、今のIngressに満足していない場合、私はあなたが進入としてAPISIXを使用することをお勧めします。

イングレスそれとしてどのようにAPISIX?我々は最初の区別を行う必要があり、入口は、入力コントローラは、ゲートウェイコンポーネントにKubernetesクラスタ状態同期で、ルールKubernetes名または定義を定義することです。しかしAPISIX自身がそれを達成する方法をAPISIXイングレスコントローラに、ちょうどAPI Gatewayのでしょうか?のは、どのように入口で簡単に見てみましょう。

自然の中で2つの部分のみ、侵入を達成:

  • 最初の部分:状態にKubernetesのクラスタ構成やクラスタKubernetes APISIXがクラスタに同期。
  • 第二部:例えばCRDにKubernetesように定義されたサービス、上流の概念としていくつかの概念を、APISIX必要があります。

あなたは第二部を実装する場合、コンフィギュレーションのKubernetes進入することで、迅速APISIXを生成することができます。あなたはAPISIX進入コントローラによってAPISIX関連する構成を生成することができます。イングレスKubernetesをサポート可能な高速電流意志のAPISIXの床のために、我々は入力コントローラと呼ばれるオープンソースプロジェクトを作成しました。

入口コントローラアーキテクチャ図

画像は、全体的なアーキテクチャ図進入コントローラプロジェクトを示しています。Kubernetesはあなたには、いくつかのYAMLドキュメント、Kubernetes構成の変更をインポートすることができ、クラスタの一部を残しました。右の部分はAPISIXクラスタであり、そのコントロールプレーンとデータプレーン。それはクラスタとAPISIX Kubernetesクラスタとの間の接続として機能図のアーキテクチャ、APISIX進入に見られるように。これは、クラスタの状態がAPISIXクラスタに同期され、クラスタ内のノードKubernetesの変化を監視するための主に担当しています。また、APISIXイングレスは最初から設計されたように、すべてのコンポーネントは、高可用性機能を持っていなければならないことKubernetesが提唱しているため、我々は、高可用性コントローラーAPISIXイングレスの保護を確実にするために2ノードまたはマルチノードモデルを採用しています。

概要

イングレスの様々なタイプの水平方向の比較

人気の市場進入コントローラに関しては、我々は単純な比較どのような長所と短所APISIX進入を見てみましょう。外国人の開発者のための図は、テーブルのKubernetesイングレスの選択を行います。私はAPISIX進入の機能の独自の理解と組み合わせて、元の形にあったに参加しました。私たちは、一番左がAPISIXであることがわかり、その後ろにKubernetes進入香港進入で、Traefikの背後に、イングレスのGolang基づいてすることができます。HAproxyは、過去の多くの一般的な、より人気のロードバランサです。Istioと大使は、海外の2つの入力は非常に人気があります。

次に我々は、これらのIngressのそれぞれの長所と短所を要約します:

  • APISIXイングレスは:APISIXイングレスも上述の利点の前に、それは非常に強力なルーティング機能を有し、フレキシブルプラグイン性能の拡張機能は、また、非常に良好です。APISIXオープンソース後の機能の多くが、着陸例がない、あなたはこれらの機能を使用する方法には、関連するガイダンス文書があるが、同時に、それは、また、非常に明らかな欠点です。
  • Kubernetesイングレス:Kubernetesはnginxの侵入を使用するデフォルトの推奨されています。その主な利点は、簡単にアクセスし、簡単です。欠点は、nginxのリロード時間のかかる問題は長い間解決できないということです。加えて、多くの利用可能なプラグインが、しかし、プラグインスケーラビリティは非常に弱いです。
  • nginxのイングレス:主な利点は、それが完全にTCPおよびUDPプロトコルをサポートしていることですが、他の機能は、認証方式が欠落し、トラフィックスケジューリング。
  • 香港:それはAPIゲートウェイKubernetes進入を導入し、新境地を考えることができるAPIゲートウェイ、そのものです。香港認証でさらに反対のエッジゲートウェイ、非常に優れた階調の展開を制限します。香港のIngress大きな利点があります:API、Kubernetes CRDに抽象化することが可能なサービスの定義を提供し、構成が香港Kubernetesイングレスへのクラスタ同期状態で完了することができます。欠点はAPISIXも小人と比較して、高可用性の観点から他の、展開するために特に困難です。
  • Traefik:よりイングレスにマイクロブログサービスゲートウェイアプリケーションのシナリオである自体進入のベースGolang、。彼の主なプラットフォームは非常に多くの合意によってサポートされ、Golangに基づいており、一般的には、何の欠点ではありません。あなたはGolangに精通している場合、それはまた、使用することをお勧めします。
  • HAproxyは:名門ロードバランサです。主な利点は、それが能力のバランスを取る非常に強力な負荷を持って、他の側面が支配的ではないということです。
  • Istio入力および大使のIngressは非常に人気の特使に基づいています。正直に言うと、私はこれらの2つの入力がよいが、唯一の欠点、彼らが特使プラットフォームをベースとしていることである何の欠点ではないと思いますが、私たちは、しきい値が高くなり始め、プラットフォームに精通していません。

要約すると、我々はイングレスのそれぞれの長所と短所を理解し、すぐに自分の進入を選択することが、自分の状況と組み合わせることができます。

著者は紹介します

李恵、テンセントクラウドミドルウェアコアR&D APIゲートウェイは、Apache APISIX PPMCのメンバー。私はコミュニティのアクティブな共有に喜んでオープンソース、ApacheのAPISIXが大好きです。

〜、私たちの手紙公衆数に注意の庭を掃除あなたに会うために楽しみにようこそ

おすすめ

転載: juejin.im/post/5e4684306fb9a07cd74f4b1b