Kubernetes 外部 HTTP リクエストが Pod コンテナに到達するプロセス全体

Kubernetes 外部 HTTP リクエストが Pod コンテナに到達するプロセス全体

Kubernetes クラスター外部からの HTTP/HTTPS リクエストはどのようにして Pod 内のコンテナに到達するのでしょうか?

HTTP リクエストフローの概要

上の図に示すように、全体のプロセスはおおよそ次のようになります。

(1)ユーザーはWeb/モバイル/PCクライアントからHTTP/HTTPSリクエストを送信します。

(2)アプリケーションサービスは通常、ドメイン名を通じて外部に公開されるため、要求はまずDNSドメイン名を通じて解決され、対応するパブリックIPアドレスが取得されます。

(3)パブリックIPアドレスは通常ロードバランサーにバインドされており、リクエストはこのロードバランサーに入ります。

  • ロード バランサはハードウェアまたはソフトウェアになります。 IP アドレスが切り替えられると、DNS キャッシュにより一定期間サービスにアクセスできなくなるため、通常は安定した状態 (固定パブリック IP アドレス) のままになります。
  • ロード バランサは、パブリック ネットワーク トラフィックを外部から受け入れ、トラフィックを内部で管理および転送する重要な中間層です。

(4)ロードバランサはリクエストをKubernetesクラスタ内のトラフィックエントリポイント(通常はイングレス)に転送します。

  • Ingress はクラスター内のルーティングと転送を担当し、クラスター内のゲートウェイと見なすことができます。
  • Ingress は単なる構成です。イングレス コントローラはトラフィックの転送を担当します。後者には、Nginx、HAProxy、Traefik、Kong など、多くのオプションがあります。

(5)イングレスは、ユーザー定義のルーティングルールに基づいてサービスにさらに転送されます。

  • たとえば、転送は要求されたパスまたはホストに基づいて行われます。

(6)サービスはセレクタ(ラベルに一致する)に基づいてリクエストをポッドに転送します。

  • サービスには多くの種類がありますが、クラスター内で最もよく使用されるタイプは ClusterIP です。
  • サービスは本質的には単なる構成であり、最終的にはノード上の kube-proxy コンポーネントに作用し、iptables/ipvs を設定することで実際のリクエスト転送を完了します。
  • サービスは複数のポッドに対応する場合がありますが、リクエストは最終的にランダムに 1 つのポッドにのみ転送されます。

(7)ポッドは最終的にその中のコンテナにリクエストを送信します。

同じポッド内に複数のコンテナが存在することは可能ですが、複数のコンテナが同じポートを共有することはできません。したがって、リクエストは特定のポート番号に応じて対応するコンテナに送信されます。

上記は、クラスター外の一般的な HTTP リクエストが Pod 内のコンテナに到達するまでのプロセス全体です。

柔軟で変更可能なネットワーク構成のため、上記のリクエスト フロー プロセスが唯一の方法ではないことに注意してください。たとえば、次のようになります。

クラウド サービスを使用している場合は、LoadBalancer タイプのサービスを使用して、クラウド サービス プロバイダーが提供するロード バランサーを直接バインドし、Ingress やその他のサービスに接続できます。

また、NodePort タイプのサービスを通じてノード上のポートを直接使用し、これらのノードを通じて独自のロード バランサーを構築することもできます。

サービスが非常にシンプルで、管理する内部トラフィックがない場合は、Ingress なしでもかまいません。

コンテナ技術の基礎

コンテナ テクノロジーの基盤は、次の 3 つから構成されます。

  • 名前空間(ここでは Linux システムカーネルの名前空間を指します)
  • Cグループ
  • ユニオンFS

リソースの分離を実装するのは Linux カーネルの名前空間です。各ポッドには独自の Linux 名前空間があるため、異なるポッドはリソースが分離されます。 PID、IPC、ネットワーク、マウント、時間など、多くの名前空間があります。 PID 名前空間はプロセス分離を実装するため、ポッドは独自のプロセス番号 1 を持つことができます。ネットワーク名前空間により、各ポッドは独自のネットワークを持つことができます。

ポッドには独自のネットワークがあり、ノードにも独自のネットワークがありますが、トラフィックはどのようにしてノードからポッドに流れるのでしょうか?

HTTP リクエストフロー処理補足

各ノードには次のものがあります:

(1)Kubelet:ノードのハウスキーパー。

(2)kube-proxy:ノードのiptables/ipvsを操作します。

(3)プラグイン:

  • CRI: コンテナ ランタイム インターフェース
  • CNI: コンテナ ネットワーク インターフェイス
  • CSI (オプション): コンテナ ストレージ インターフェイス

各ノードには独自のルート名前空間があり、これにはネットワーク関連のルート netns も含まれます。各ポッドには独自のポッド ネットがあります。ノードは veth ペアを介してポッドに接続でき、トラフィックはこのチャネルを介して流れます。 veth ペアの構築、ポッド ネットワーク名前空間の設定、ポッドへの IP アドレスの割り当てなどは、まさに CNI のタスクです。

これまでのところ、これは Kubernetes クラスター外部の一般的な HTTP/HTTPS リクエストが Pod 内のコンテナに到達するプロセス全体です。

参考文献:

  • https://kubernetes.io/docs/concepts/services-networking/
  • https://learnk8s.io/kubernetes-network-packets

<<:  Docker Swarm: コンテナオーケストレーションを大幅に簡素化

>>:  無線ネットワーク向け将来の通信インフラの革新

推薦する

蒼井そらは、典型的な感傷的な商品である下着を販売しています

突然、Weiboにニュースが載りました:蒼井そらが下着を販売しています!驚きました、本当に驚きました...

SaaS サービス プロバイダーのセキュリティを評価する 10 のポイント

ますます多くの企業にとって、SaaS (Software as a Service) は重要なビジネ...

注目すべきエッジコンピューティングベンダートップ10

モノのインターネット (IoT) とセンサー技術の進歩により、データが収集された場所またはその近くで...

中小規模のウェブサイトはモバイルインターネットのブームにどのように対応すべきでしょうか?

モバイルインターネットユーザー数の継続的な増加とスマートフォンの急速な普及は、モバイルインターネット...

CreditEase オープンソース |分散タスクスケジューリングプラットフォームSIA-TASKのアーキテクチャ設計と運用プロセス

1. 分散タスクスケジューリングの背景インターネット アプリケーションであっても、エンタープライズ...

百度ニュースアルゴリズムの新発見:A5サイズの記事が百度ニュースに多く含まれている

最近、百度ニュースのアルゴリズムのアップグレードと改訂は、多くのネットユーザー、特にメディア業界とウ...

#黒5# geecdn: 45% 割引、香港 VPS、米国 VPS、フランスの高防御 VPS

geecdn(2017年創業)が、いち早く「ブラックフライデー」プロモーションを実施。フランスのOV...

ホストの KVM VPS に Windows システムをインストールするチュートリアル

Hostus Cat は、hostus KVM VPS を購入した友人の役に立つことを期待して、ho...

[長期更新] 期限切れだがまだ購入可能な「格安 VPS」プロモーションの racknerd のリスト

Racknerd VPS は設立以来、さまざまな VPS プロモーションをリリースしてきました。コス...

Microsoft Azure がモバイル インターネット クラウドの適応を促進

スマートモバイルデバイスの普及とBYODの増加により、携帯電話やタブレットデバイスを使用して電子メー...

ライブ電子商取引の伝染病予防マニュアル

ライブストリーミング電子商取引が「疫病との戦いの主力」となった理由は、その敷居の低さとテンセントのラ...

韓国無制限帯域幅VPS

韓国の無制限トラフィック VPS は非常に人気があります。主な理由は、韓国の VPS は登録不要、高...

内部リンクのアンカーテキストの構築を強化することで、サイト全体の重みが効果的に向上します。

ウェブサイトの SEO におけるアンカー テキストの役割は自明ですが、多くの SEO 担当者はウェブ...

IoTとクラウドコンピューティングの潜在的な関係を明らかにする

今日、周りを見渡すと、モノのインターネット (IoT) が家庭でも職場でも私たちの日常生活に大きな変...