ロードバランサとは?
Kubernetes コンテナーの管理は、アプリケーションをスムーズに実行するために不可欠です。ロード バランサーは、Kubernetes で優れたコンテナー管理と高いスケーラビリティを実現するための主要な要件です。前述のように、ロード バランサーはクライアント サーバーとソース サービスの間に配置されます。ロード バランサーの唯一の目的は、ネットワーク フローが異なるサーバー間で調整されるようにすることです。 Kubernetes では、ネットワーク トラフィックはリソース サーバーから複数の Kubernetes サービスに送信されます。したがって、さまざまなサーバーと Kubernetes サービス間でのこのデータの流れを管理するには、規制機関が必要です。ロード バランサーは、サーバーの過負荷を防ぎ、Kubernetes でのサーバーの応答時間を改善します。これにより、ユーザーはコンテナーをより効率的に使用できます。
その容量が達成されるまで、Kubernetes ロード バランサーはプールの最初のサーバーに接続を送信します。その後、次のサーバーが新しい接続を受け取ります。この戦略は、ホストされた設定など、仮想マシンが高価な状況で役立ちます。
Kubernetes では、サービス構成ファイルは次のようになります。
前に提供されたスクリーンショットで、タイプが loadBalancer であることがわかります。サービス構成ファイルのタイプ領域に LoadBalancer を入力することで、ロード バランサーがオンになります。 apiversion、種類、名前、および仕様情報などの追加の詳細も表示されます。このインスタンスのロード バランサーは、トラフィックをバックエンド POD にルーティングし、クラウド サービス プロバイダーによって管理および指示されます。
ロードバランサの動作原理
まず、よくある誤解を解いておきます。 Kubernetes でロード バランサーという言葉を聞くと、混乱するかもしれません。Kubernetes のロード バランサーという用語は、多くの目的で同じ意味で使用されているためです。ただし、この記事では、Kubernetes のサービスを外部環境に関連付けることと、これらのサービスを使用してネットワーク負荷を管理することの 2 つに焦点を当てます。
Kubernetes のポッドは、スケジュールされたタスクを含む展開可能な最小単位を指します。 Pod のグループがコンテナーを作成します。 Kubernetes のコンポーネントは、機能に基づいて構成されています。同様の機能を実行するすべてのコンテナーは、ポッドに編成されます。同様に、関連するすべてのポッドが結合されてサービスが作成されます。 Kubernetes のポッドは永続的ではないことに注意してください。ポッドが再起動されるたびに、それらは破棄され、作成され続けます。
その結果、ポッドの IP アドレスも何度も変更され続けます。ポッドが再起動されると、Kubernetes は新しく作成されたポッドに新しい IP アドレスを自動的に割り当てます。一方、総称してサービスと呼ばれるポッドのグループについて話す場合、それらは永続的な IP アドレスを持っています。個人とは異なり、再起動しても変化しません。これはクラスター IP と呼ばれます。その特定のクラスター内のコンテナーは、クラスター IP にのみアクセスできます。ただし、外部環境からクラスター IP にアクセスすることはできません。そこで重要なのがロードバランサーです。クラスターの外部からクラスター IP に直接アクセスすることはできないため、介入が必要です。この介入により、クラスター外部からのすべての要求が処理され、ネットワーク トラフィックが管理されます。
ラウンドロビンロードバランサーの作成
ロードバランサーにはさまざまな種類があります。この記事では、特に 1 つの種類をターゲットにしています。ネットワーク フロー バランシング専用のロード バランサーのタイプについて説明します。 Kubernetes では、このロード バランサーが Kubernetes サービスへのネットワーク トラフィックの適切な分散を処理します。この配布は、事前にプログラムされた一連の命令またはアルゴリズムに従って行われます。
ラウンド ロビン ロード バランサーは、サーバー プール間の入力要求を管理する最も簡単な方法の 1 つです。管理やスケーラビリティなど、Kubernetes の機能を最大限に活用することも戦略の 1 つです。 Kubernetes サービスをより適切かつ効率的に使用するための鍵は、ポッドへのトラフィックのバランスを取ることです。
ラウンド ロビン アルゴリズムは、特定の順序で一連のポッドにトラフィックを送信するように設計されています。ここで、注意する必要があるのは計画順序です。つまり、構成はあなたの手に委ねられています。
ステップ1: ラウンドロビン アルゴリズムで 5 つのポッドを構成したとします。ロードバランサーは、特定の順序で各ポッドにリクエストを送信します。最初のポッドは最初のリクエストを受け取ります。 2 番目のポッドが 2 番目のリクエストを受け取ります。
ステップ2: 同様に、3 番目の要求が 3 番目の Pod に送信され、以降も同様です。でも序列は変わらない。重要なことの 1 つは、ラウンド ロビン アルゴリズムがサーバーの現在の負荷などの変数を処理しないことです。つまり静的です。これが、実動トラフィックでは好まれない理由です。
ラウンドロビン アルゴリズムに傾倒すべき主な理由は、その実装が簡単だからです。ただし、これによりトラフィックの精度が損なわれる可能性があります。これは、ラウンド ロビン ロード バランサーが異なるサーバーを識別できないためです。加重ラウンド ロビン、動的ラウンド ロビンなど、精度を向上させるためにロード バランサーのさまざまなバリエーションが存在します。
結論
この記事では、ロード バランサーとそのしくみに関する基礎情報を読者に提供します。 Kubernetes 管理者の最も重要なタスクの 1 つは、負荷分散です。さらに、Kubernetes の構造と、Kubernetes クラスターの実行を改善するためにロード バランサーがいかに重要であるかについても説明しました。この記事では、ラウンド ロビン ロード バランサーであるロード バランサーのタイプについて学びました。