Kubernetes ネットワークのビジュアル ガイド

Kubernetes ネットワークのビジュアル ガイド

Kubernetes 内のネットワークは、物理的な世界のネットワークとそれほど変わりません。ネットワークの基本的な知識があれば、コンテナ ポッドとサービス間の通信を簡単に実現できます。

スイッチ、ルーター、イーサネット ケーブルを使用する物理ネットワークから、ソフトウェア定義ネットワーク (SDN) と仮想インターフェイスを使用する仮想ネットワークに移行するには、多少の学習が必要です。もちろん、原則は同じですが、規範やベストプラクティスは異なります。 Kubernetes には独自のルールセットがあり、コンテナやクラウドを扱う場合は、Kubernetes ネットワークの仕組みを理解しておくと役立ちます。

Kubernetes ネットワーク モデルには、覚えておくべき一般的なルールがいくつかあります。

  • 各ポッドには独自の IP アドレスがあります。ポッド間にリンクを作成する必要はなく、コンテナ ポートをホスト ポートにマップする必要もありません。
  • NAT は不要: ノード上の Pod は、NAT なしですべてのノード上のすべての Pod と通信できる必要があります。
  • エージェントはすべてのアクセス権を取得します。ノード上のエージェント (システム デーモン、Kubelet) は、そのノード内のすべての Pod と通信できます。
  • 共有名前空間: Pod 内のコンテナはネットワーク名前空間 (IP アドレスと MAC アドレス) を共有するため、ループバック アドレスを使用して相互に通信できます。

Kubernetes ネットワークはどのような問題を解決しますか?

Kubernetes ネットワークは、Kubernetes 内のさまざまなエンティティ タイプが通信できるように設計されています。 Kubernetes インフラストラクチャのレイアウトは、設計上、多くの分離が行われています。名前空間、コンテナ、およびポッドは、コンポーネントを互いに区別できるように設計されているため、高度に構造化された通信計画が重要です。

コンテナ間ネットワーク

コンテナ間のネットワークは、Pod ネットワーク名前空間を通じて行われます。ネットワーク名前空間を使用すると、システムの他の部分から分離され、独立して実行される独立したネットワーク インターフェイスとルーティング テーブルを持つことができます。各ポッドには独自のネットワーク名前空間があり、コンテナは同じ IP アドレスとポートを共有します。これらのコンテナはすべて同じ名前空間の一部であるため、コンテナ間の通信はすべて localhost を介して行われます。 (図では緑の線で示されています。)

ポッド間ネットワーク

Kubernetes では、各ノードにポッド用の指定された CIDR IP 範囲があります。これにより、各ポッドがクラスター内の他のポッドから認識できる一意の IP アドレスを受け取ることが保証されます。新しいポッドが作成されても、IP アドレスが重複することはありません。コンテナ間ネットワークとは異なり、Pod を同じノードにデプロイするか、クラスター内の異なるノードにデプロイするかに関係なく、Pod 間の通信は実際の IP を使用して行われます。

上の図は、ポッドが相互に通信するためには、ポッド ネットワーク名前空間とルート ネットワーク名前空間の間でトラフィックが流れる必要があることを示しています。これは、仮想イーサネット デバイスまたは veth ペア (図では veth0 を Pod 名前空間 1 に、veth1 を Pod 名前空間 2 に接続) を介して Pod 名前空間とルート名前空間を接続することによって実現されます。仮想ブリッジはこれらの仮想インターフェイスを接続し、アドレス解決プロトコル (ARP) を使用してそれらの間で通信が流れるようにします。

データが Pod 1 から Pod 2 に送信される場合、イベント フローは次のようになります。

  • Pod 1 のトラフィックは、eth0 を経由して、ルート ネットワーク名前空間の仮想インターフェイス veth0 に流れます。
  • 次に、トラフィックは veth0 を経由して veth1 に接続された仮想ブリッジに送られます。
  • トラフィックは仮想ブリッジを経由して veth1 に送られます。
  • 最後に、トラフィックは veth1 を介して Pod 2 の eth0 インターフェースに到達します。

ポッドからサービスへのネットワーク

ポッドは動的です。需要に応じて規模を拡大または縮小する必要があるかもしれません。アプリケーションがクラッシュしたりノードに障害が発生した場合でも、再度作成できます。これらのイベントにより、Pod の IP アドレスが変更され、ネットワークの問題が発生する可能性があります。

Kubernetes は、次のことを実行するサービス機能を使用してこの問題を解決します。

  • サービスに関連付けられているバックエンド ポッドに接続するには、フロントエンドに静的仮想 IP アドレスを割り当てます。
  • この仮想 IP 宛てのすべてのトラフィックは、バックエンド ポッドのセットに負荷分散されます。
  • Pod の IP アドレスを追跡しておくと、Pod の IP アドレスが変更されても、クライアントはサービス自体の静的仮想 IP アドレスに直接接続するだけなので、問題は発生しません。

クラスター内で負荷を分散する方法は 2 つあります。

  • IPTABLES: このモードでは、kube-proxy は API サーバーの変更を監視します。新しいサービスごとに、サービスの clusterIP とポートへのトラフィックをキャプチャする iptables ルールをインストールし、トラフィックをサービスのバックエンド ポッドにリダイレクトします。ポッドはランダムに選択されます。このモードは信頼性が高く、オーバーヘッドが低くなります。これは、Linux Netfilter がトラフィックを処理するときにユーザー空間とカーネル空間を切り替える必要がないためです。
  • IPV: IPV は Netfilter 上に構築され、トランスポート層の負荷分散を実装します。 IPVS は Netfilter フック関数を使用し、基礎となるデータ構造としてハッシュ テーブルを使用し、カーネル空間で動作します。つまり、IPVS モードの kube-proxy は、iptables モードの kube-proxy よりもレイテンシが低く、スループットが高く、トラフィックのリダイレクトのパフォーマンスが優れています。

上の図は、Pod 1 から Pod 3 へのパケット フローを示しています。このフローは、サービスを経由してさまざまなノード (赤でマーク) に渡されます。仮想ブリッジ宛てのパケットは、ブリッジ上で実行されている ARP がそのサービスを理解しないため、デフォルト ルート (eth0) を使用する必要があります。その後、パケットは iptables を介してフィルタリングされる必要があります。iptables は、kube-proxy によってノードに定義されたルールを使用します。したがって、図は現在のパスを示しています。

インターネットからサービスネットワークへ

これまで、クラスター内でトラフィックをルーティングする方法について説明しました。ただし、Kubernetes ネットワークには、アプリケーションを外部ネットワークに公開するという別の側面もあります。

アプリケーションを外部ネットワークに公開するには、2 つの方法があります。

  • 出力: Kubernetes サービスからインターネットにトラフィックをルーティングする場合は、このオプションを使用します。この場合、iptables はソース NAT を実行するため、トラフィックは Pod ではなくノードから送信されたように見えます。
  • イングレス: これは外部からサービスへの着信トラフィックです。 Ingress は、接続ルールを使用して、サービスとの特定の通信を許可およびブロックします。通常、ネットワーク スタックの異なる領域で実行される Ingress ソリューションには、サービス ロード バランサと Ingress コントローラの 2 つがあります。

ディスカバリーサービス

Kubernetes は次の 2 つの方法でサービスを検出します。

  • 環境変数: Pod が実行されるノードで実行されている kubelet サービスは、{SVCNAME}_service_HOST および {SVCNAME}_service_PORT の形式で各アクティブ サービスの環境変数を設定する役割を担います。クライアント ポッドが表示される前にサービスを作成する必要があります。そうしないと、これらのクライアント Pod に環境変数が設定されません。
  • DNS: DNS サービスは Kubernetes サービスとして実装され、1 つ以上の DNS サーバー ポッドにマッピングされ、他のポッドと同様にスケジュールされます。クラスター内のポッドは DNS サービスを使用するように構成されており、DNS 検索リストにはポッド独自の名前空間とクラスターのデフォルト ドメインが含まれています。 CoreDNS などのクラスター対応 DNS サーバーは、Kubernetes API で新しいサービスを監視し、各サービスの DNS レコードのセットを作成します。クラスター全体で DNS が有効になっている場合、すべてのポッドは DNS 名に基づいてサービスを自動的に解決できます。 Kubernetes DNS サーバーは、ExternalName サービスにアクセスする唯一の方法です。

公開されたサービスの ServiceTypes

Kubernetes サービスは、通常ラベル セレクターを使用して定義される一連の Pod にアクセスする方法を提供します。これは、クラスター内の他のアプリケーションにアクセスしようとするアプリケーションである場合もあれば、クラスター内で実行されているアプリケーションを外部に公開できるようにする場合もあります。クベネフィット
ServiceTypes を使用すると、必要なサービスのタイプを指定できます。

さまざまな ServiceTypes には次のものが含まれます。

  • ClusterIP: これはデフォルトの ServiceType です。これにより、サービスがクラスター内からのみアクセス可能になり、クラスター内のアプリケーションが相互に通信できるようになります。外部アクセス不可。
  • LoadBalancer: このサービス タイプは、クラウド プロバイダーのロード バランサーを使用してサービスを公開します。外部ロードバランサからのトラフィックはバックエンド Pod に送信されます。クラウド プロバイダーが負荷分散を実装する方法を決定します。
  • NodePort: これにより、すべてのノードで特定のポートを開いて、外部通信がサービスにアクセスできるようになります。このポートに送信されたトラフィックはすべてサービスに転送されます。
  • ExternalName: このタイプのサービスは、ExternalName フィールドの内容を使用して、CNAME レコードとその値を返すことで、サービスを DNS 名にマッピングします。いかなる種類のプロキシも設定されていません。

ネットワークソフトウェア

使用されているテクノロジーを理解していれば、Kubernetes 内のネットワークは物理的な世界のネットワークとそれほど変わりません。一生懸命勉強してネットワークの基礎を覚えておけば、コンテナ、ポッド、サービス間の通信を簡単に実現できます。

<<:  Azure で発見された 6 つの「悪夢」のクラウド セキュリティ脆弱性に対する Microsoft の対応

>>:  ビジネスニーズを中心としたクラウドネイティブアーキテクチャシステムの構築

推薦する

地元の高級品電子商取引は変革の困難に直面している:資本は深く閉じ込められている

供給とモデルの二重のボトルネックに遭遇地元の高級品電子商取引は変革の困難に直面チー・ジエ資金打ち切り...

自動車製品の低コストオンライン・オフラインプロモーションの事例分析

筆者は最近、自動車製品のプロモーションを担当しており、過去数か月間に利益と損失の両方を経験しました。...

tnahosting: 年間 15 ドル、シカゴ VPS、KVM/1G メモリ/2 コア/15g SSD/5T トラフィック

tnahosting は、公式には に設立されたと主張していますが、実際には誇張が非常に大きく、主に...

SAPは世界最大のビジネスネットワークを拡大する計画で、中国でさらに多くのクラウド製品が発売される予定

SAP は本日開催された SAPPHIRE NOW カンファレンスにおいて、ビジネス成果の向上、経済...

中小企業がマーケティングに協力するにはどうすればいいでしょうか?

マーケティングの世界では、どこでも見かける言葉があります。それは「強力な提携」です。しかし、この4つ...

モバイル エッジ コンピューティングと 5G の利点は何ですか?

5G の高速性と低遅延性をエッジ コンピューティングの処理能力と組み合わせることで、IoT とモバイ...

nexusbytes: ロサンゼルス AMD シリーズ VPS フラッシュセール、年間 27 ドル、1G メモリ/1 コア/10g NVMe/500g 帯域幅

Nexusbytes は現在、米国西海岸のロサンゼルス データ センターの VPS をフラッシュ セ...

「ヒーターをつけながらアイスキャンディーを食べる」という北部の人々の習慣の背景にはクラウド コンピューティングがあるのでしょうか?

冬が来ました。南の人々が暖を取るために純粋に「属性」に頼るのに対し、北の人々は冬を乗り切るために「装...

hosteons - 無制限の VPS、KVM 仮想化/Windows、ロサンゼルス、20G の高防御

hosteons はシンガポールに登録されている会社です (HOSTEONS PTE. LTD.、登...

事例の共有: ウェブサイトが降格された理由の詳細を2~3つ

ウェブサイトの改訂後、IP アドレスの数は 1 日あたり数万から数百に減少しました。バッファ回復期間...

SEO業界に参入する初心者への質問

初心者として、SEO 業界に参入する前に、まず SEO を理解する必要があります。 1. SEO と...

クラウド プラットフォームの可視性を向上させる必要があるのはなぜですか?

COVID-19パンデミックは多くの企業の業務に大きな変化をもたらしました。多くの企業は、顧客の期待...

SEO はどれくらい持続しますか?

GOOGLEが中国市場から撤退して以来、Baiduは国内市場の大部分を占めることに成功している。最近...

2013 年の旅行と休暇の電子商取引の躍進: モバイル インターネットの試練

記者の趙娜が北京からレポートします春節休暇は、一年の最初のゴールデンウィークとして、常に全国にとって...