最近、何人かの学生から NodePort、LoadBalancer、Ingress の違いについて質問を受けました。どちらも外部クラスター トラフィックをクラスターにインポートする方法ですが、実装方法は異なります。それぞれの仕組みと、どのように選択できるかを見てみましょう。 注: ここで説明する内容はすべて Google Kubernetes Engine に基づいています。 minikube やその他のツールを使用してオンプレミス モードで他のクラウド上で実行する場合、対応する操作が少し異なる場合があります。あまり技術的な詳細には立ち入りませんが、もっと詳しく知りたい場合は、公式ドキュメント[1]が素晴らしいリソースになります。
クラスターIP ClusterIP サービスは Kubernetes のデフォルト サービスです。クラスター内でサービスが提供され、クラスター内の他のアプリケーションがそのサービスにアクセスできるようになります。クラスターの外部からはアクセスできません。 ClusterIP サービスの YAML ファイルは次のようになります。
ClusterIP サービスがインターネットからアクセスできない場合、なぜそれについて議論するのでしょうか?それは、Kubernetes プロキシ モードを通じてサービスにアクセスできるからです。 Kubernetes プロキシ モードを開始します。
次のパターンを使用して、Kubernetes API を介してこのサービスにアクセスできます。
上記で定義したサービスにアクセスするには、次のアドレスを使用できます。
このアプローチはいつ使用すればよいですか? シナリオによっては、Kubernetes プロキシ モードを使用してサービスにアクセスする必要があります。
このアプローチでは、認証されていないユーザーとして kubectl を実行する必要があるため、この方法でサービスをインターネットに公開したり、本番環境で使用したりすることはできません。 ノードポート NodePort サービスは、外部トラフィックをサービスに誘導する最も原始的な方法です。 NodePort は、その名前が示すように、すべてのノード (仮想マシン) で特定のポートを開き、このポートに送信されたトラフィックは対応するサービスに転送されます。 NodePort サービスの YAML ファイルは次のようになります。
NodePort サービスは、通常の「ClusterIP」サービスとは主に 2 つの点で異なります。 ***、そのタイプは「NodePort」です。ノード上で開いているポート値を指定する、nodePort と呼ばれる追加のポートがあります。このポートを指定しない場合は、システムがランダムにポートを選択します。 thockin がコメントで述べたように、ユーザーが利用可能なポートを自分で選択するのはコストがかかりすぎるため、ほとんどの場合、Kubernetes にポートを選択させる必要があります。 このアプローチはいつ使用すればよいですか?
ノード/VMのIPアドレスが変更された場合、この状況に対処できる必要があります。 上記の理由から、本番環境でこの方法でサービスを公開することはお勧めしません。実行しているサービスが常時可用性を必要としない場合、またはコストが重視される場合は、このアプローチを使用できます。このようなアプリの最も良い例は、デモ アプリや一時的なアプリです。 ロードバランサー LoadBalancer サービスは、サービスをインターネットに公開するための標準的な方法です。 GKEでは、このアプローチによりネットワークロードバランサ[2]が起動され、単一のIPアドレスが割り当てられ、すべてのトラフィックがサービスに転送されます。 このアプローチはいつ使用すればよいですか? サービスを直接公開する場合、これがデフォルトになります。指定したポートへのすべてのトラフィックは、対応するサービスに転送されます。フィルターやルーティングなどはありません。つまり、HTTP、TCP、UDP、Websockets、gRPC など、ほぼあらゆる種類のトラフィックをサービスに送信できます。 このアプローチの最大の欠点は、LoadBalancer で公開される各サービスに独自の IP アドレスが割り当てられ、使用される LoadBalancer ごとに料金が発生するため、非常にコストがかかることです。 イングレス 上記のすべての例とは異なり、Ingress は実際にはサービスの種類ではありません。代わりに、複数のサービスの前に配置され、「スマート ルーター」またはクラスター エントリ ポイントとして機能します。 Ingress ではさまざまなことを実行でき、Ingress コントローラーの種類によって機能が異なります。 GKEのデフォルトのイングレスコントローラはHTTP(S)ロードバランサ[3]を起動します。パスまたはサブドメインに基づいてトラフィックをバックエンド サービスにルーティングできます。たとえば、ドメイン foo.yourdomain.com 宛てのすべてのトラフィックを foo サービスに転送し、パス yourdomain.com/bar/path のトラフィックを bar サービスに転送できます。 L7 HTTPロードバランサ[4]を使用してGKE上で生成されるIngressオブジェクトのYAMLファイルは、次のようになります。
このアプローチはいつ使用すればよいですか? Ingress はおそらくサービスを公開する最も大規模な方法ですが、最も複雑でもあります。 Ingress コントローラには、Google Cloud Load Balancer、Nginx、Contour、Istio など、さまざまな種類があります。また、cert-manager[5]などのさまざまなプラグインがあり、サービスにSSL証明書を自動的に提供できます。 Ingress は、同じ IP アドレスを使用して複数のサービスを公開し、それらすべてが同じレイヤー 7 プロトコル (通常は HTTP) を使用する場合に最も便利です。ネイティブ GCP 統合を使用する場合、支払うのは 1 つのロードバランサに対してのみで、Ingress は「スマート」であるため、すぐに使用できるさまざまな機能 (SSL、認証、ルーティングなど) も利用できます。 関連リンク: https://kubernetes.io/docs/concepts/services-networking/service/ https://cloud.google.com/compute/docs/load-balancing/network/ https://cloud.google.com/compute/docs/load-balancing/http/ https://cloud.google.com/compute/docs/load-balancing/http/ https://github.com/jetstack/cert-manager |
>>: 誰もがクラウド コンピューティングとビッグ データについて語っていますが、クラウド コンピューティングとは一体何でしょうか?
新浪科技報、北京時間6月11日朝のニュース、米国のテクノロジーウェブサイトBrightWireによる...
alphavps.bg は 2017 年に設立されたブルガリアのホスティング会社で、主に仮想ホスティ...
テンセントテクノロジーニュース(劉学同)北京時間9月6日のニュース、海外メディアの報道によると、テク...
ITタイムズ記者ハオ・ジュンフイ 1967 年、マルビン・コンウェイというプログラマーが論文の中で次...
リーダーとは何ですか?まだ分からないの?あなたはまた遅れています。取り戻してください。ウェブマス...
原題:ビジネスエリートからエンターテインメントの主人公へ、劉強東の「自己推薦」がマーケティングに変身...
Vultr はアフリカにもデータセンター事業を展開しており、具体的にはアフリカ最南端に位置する南アフ...
エッジコンピューティングと人工知能の組み合わせにより、エッジ人工知能 (エッジ AI) は現在のテク...
ビッグデータ技術が解決しなければならない主な問題は大規模データの計算処理であるため、最初に解決すべき...
dwidc(大王データ)は、今年のダブルイレブン特別プロモーションを開始しました。湖北電信高防御クラ...
ますます多くの企業がビジネスをクラウド プラットフォームに移行しています。コロナウイルスの流行中、ク...
検索エンジンは、私たちウェブマスターにとって、常にトラフィックを獲得するための主な手段でした。多くの...
Kubernetes クラスターを監視することは、コンテナ化されたアプリケーションの健全性、パフォー...
以前の記事では、クラウドネイティブ エッジ コンピューティング スタックのコア ビルディング ブロッ...
インターネット上のさまざまな業界のウェブサイトの中には、消費者が2度目を購入することがほとんどない業...