あなたは現代のアプリ開発者です。 新しいアプリやコンテナを作成、テスト、展開、管理するには、オープンソースのコレクションと、場合によってはいくつかの商用ツールを使用します。 開発、テスト、ステージング、および本番環境でこれらのコンテナとポッドを実行するために Kubernetes を選択しました。 マイクロサービス、 Cloud Native Computing Foundation 、その他の最新の業界標準のアーキテクチャと概念を理解しています。
この旅を通して、Kubernetes が本当に強力であることがわかりました。 しかし、それがどれほど困難で、柔軟性がなく、イライラさせられるものであるかということにも、おそらく驚かされることでしょう。 ルーター、ファイアウォール、ロード バランサー、その他のネットワーク デバイスへの変更や更新の実装と調整は、特に自社のデータ センターでは大変な作業になることがあります。 それは開発者を泣かせるのに十分です。
これらの課題にどのように対処するかは、Kubernetes をどこでどのように実行するか (マネージド サービスとして実行するか、オンプレミスで実行するか) に大きく関係します。 この記事では、展開の選択が使いやすさに影響を与える重要な領域である TCP 負荷分散について説明します。
Kubernetes 用のパブリック クラウド プロバイダーなどのマネージド サービスを使用すると、面倒なネットワーク関連の作業の多くが自動的に処理されます。 たった 1 つのコマンド ( kubectl apply -f loadbalancer.yaml
) で、サービスタイプLoadBalancerによってパブリック IP、DNS レコード、および TCP ロード バランサーが提供されます。 たとえば、Amazon Elastic Load Balancer を設定して、NGINX Ingress Controller を含むポッドにトラフィックを分散し、このコマンドを使用すると、バックエンドが変更されても心配する必要がなくなります。 とても簡単なので、当然のことと思っているかもしれません。
オンプレミス クラスターの場合、シナリオはまったく異なります。 あなたまたはあなたのネットワーク仲間がネットワーク部分を提供する必要があります。 「Kubernetes アプリにユーザーを呼び込むのがなぜこんなに難しいのか」と疑問に思うかもしれません。 答えは単純ですが、少し衝撃的です。 クラスターの玄関口となるサービス タイプ LoadBalancer は実際には存在しません。
アプリとサービスをクラスターの外部に公開するには、ネットワーク チームが機器を再構成する前に、チケット、承認、手順、さらにはセキュリティ レビューが必要になる可能性があります。 あるいは、すべてを自分で行う必要があり、アプリケーションの配信ペースが極端に遅くなる可能性もあります。 さらに悪いことに、 NodePort が変更されるとトラフィックがブロックされる可能性があるため、Kubernetes サービスに変更を加えることはできません。 ユーザーが 500 エラーを受け取ることをどれほど好むかは、私たち全員が知っています。 おそらくあなたの上司はそれをさらに嫌うでしょう。
私たちの新しいプロジェクトを利用すれば、「難しい選択肢」を「簡単な選択肢」に変えることができます。 Kubernetes 用の NGINX ロードバランサー。 この無料プロジェクトは、 NGINX Ingress Controller を監視し、負荷分散用に構成された外部のNGINX Plusインスタンスを自動的に更新するKubernetes コントローラーです。 デザインが非常にシンプルなので、インストールや操作も簡単です。 このソリューションを導入すると、オンプレミス環境に TCP 負荷分散を実装できるため、新しいアプリやサービスがすぐに検出され、トラフィックで利用できるようになります。手動で操作する必要はありません。
NGINX Loadbalancer for Kubernetes は Kubernetes クラスター内に配置されます。 nginx-ingress サービス (NGINX Ingress コントローラー) を監視するために Kubernetes に登録されます。 バックエンドに変更があると、NGINX Loadbalancer for Kubernetes はワーカー IP と NodePort TCP ポート番号を収集し、IP:ポートをNGINX Plus API経由で NGINX Plus に送信します。NGINX アップストリーム サーバーはリロードを必要とせず
に更新され、NGINX Plus はトラフィックを適切なアップストリーム サーバーと Kubernetes NodePort に負荷分散します。 高可用性を実現するために、追加の NGINX Plus インスタンスを追加できます。
以下のスクリーンショットには、NGINX Loadbalancer for Kubernetes がデプロイされ、その機能を実行していることを示す 2 つのウィンドウがあります。
nginx-ingress
用)注記: この例では、Kubernetesワーカーノードは10.1.1.8と10.1.1.10です。
Kubernetes クラスターのエッジでのネットワークの課題に悩まされている場合は、プロジェクトを試してみて、ご意見をお聞かせください。 NGINX Loadbalancer for Kubernetes のソース コードはオープン ソース (Apache 2.0 ライセンス) であり、すべてのインストール手順はGitHub で入手できます。
フィードバックを提供するには、リポジトリにコメントを残すか、 NGINX コミュニティ Slackでメッセージを送信してください。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"