コンテナ クラウド アーキテクチャ | Kubernetes ネットワーク モデルを理解する

コンテナ クラウド アーキテクチャ | Kubernetes ネットワーク モデルを理解する

Kubernetes ネットワークを使用すると、k8s ネットワーク内での通信を構成できます。フラットなネットワーク構造に基づいており、ホストとコンテナ間のポート マッピングは必要ありません。

Kubernetes ネットワークにより、コンテナ化されたコンポーネント間の通信が可能になります。このネットワーク モデルの主な利点は、ホストとコンテナー間でポートをマップする必要がないことです。ただし、Kubernetes ネットワーク モデルを構成するのは簡単な作業ではありません。この記事では、Kubernetes ネットワークとは何かを学び、一般的な実装を探り、Kubernetes ネットワークの主なバリエーションについて説明します。

Kubernetes ネットワーキングとは何ですか?

Kubernetes (k8s) はオープンソースのコンテナ オーケストレーション プラットフォームです。これを使用すると、オンプレミスまたはクラウドでのコンテナの展開、更新、および操作を自動化できます。 k8s を使用すると、オペレーティング システムや環境を気にすることなく、複数のインフラストラクチャにわたってコンテナ化されたワークロードを管理できます。

Kubernetes ネットワークは、k8s がコンポーネント間の通信を実装するために使用するモデルです。フラットなネットワーク構造に基づいており、ホストとコンテナ間でポートをマッピングする必要はありません。 Kubernetes ネットワークの設定は難しい場合がありますが、k8s 操作に不可欠な部分であり、展開を成功させるにはこれを理解する必要があります。

一般的なKubernetesネットワーク実装

Kubernetes を使用する場合、プラットフォームは、実装にサードパーティ ツールを必要とするネットワーク モデルを適用します。選択できるサードパーティ ツールは多数ありますが、次の 3 つが人気のあるオプションです。

  • Flannel - k8s 用に設計されたオープンソースのネットワーク構造。 Flannel は各ホスト上のバイナリ エージェントを介して実行されます。プロキシはホストにサブネット リースを割り当て、etcd を使用して構成データを保存します。
  • Project Calico - オープンソースのネットワーク プロビジョニングおよびポリシー エンジン。 Calico を使用すると、k8s ポッドを接続するためのスケーラブルなネットワーク ソリューションを作成できます。また、ホスト ネットワークまたはサービス メッシュ レイヤーでセキュリティ ポリシーを適用することもできます。
  • Weave Net — 仮想ネットワークの作成に使用できる独自のネットワーク ツールキット。 Weave Net には、回復力、スケーラビリティ、セキュリティ、マルチキャスト ネットワーキング、サービス検出などの機能が含まれています。分散型アーキテクチャに基づいており、外部の構成サービスやストレージは必要ありません。

Kubernetes ネットワークの変更

標準的な Kubernetes デプロイメントでは、知っておくべきネットワークの変更がいくつかあります。注意すべき最も一般的なネットワーク状況を以下に示します。

コンテナ間ネットワーク

ネットワークの高レベルのビューでは、イーサネット デバイスと直接通信するデバイスまたは仮想マシンが示されます。ただし、実際には (少なくとも Linux の場合)、マシ​​ン上のすべてのプロセスはネットワーク名前空間内で通信します。

この名前空間は、独自のネットワーク デバイス、ファイアウォール ルール、およびルートを含む論理ネットワーク スタックを作成します。プロセスを実行すると、デフォルトでルート ネットワーク名前空間に割り当てられます。これにより、プロセスへの外部アクセスが可能になります。

Kubernetes では、コンテナはポッドにグループ化され、各ポッドには共有名前空間があります。このポッドでは、すべてのコンテナは同じポート、IP アドレス、ポート スペースを持ちます。通信するには、Pod 内のコンテナはすべて同じ名前空間で実行されるため、localhost を使用できます。異なる Pod 内のコンテナが通信する必要がある場合は、以下で説明する Pod 間ネットワーク手順を使用します。

ポッド間ネットワーク

ポッド間ネットワークは、同じノード内またはノード間のポッド間で発生する可能性があります。各ノードには、クラスレス ドメイン間ルーティング (CIDR) ブロックがあります。ブロックは、そのノード内のポッドに割り当てられた一意の IP アドレスの定義済みセットです。これにより、どのノード上にあるかに関係なく、各ポッドに一意の IP が提供されるようになります。

ポッドが通信する必要がある場合、仮想イーサネット デバイス (VED) または veth ペアを使用してポッドを接続します。 Veth ペアは、名前空間全体に分散された結合されたネットワーク インターフェイスです。ペアの 1 つはルート名前空間に割り当てられ、もう 1 つはポッド名前空間に割り当てられます。 VED は、2 つの名前空間間のブローカー接続として機能します。

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

Kubernetes は、必要に応じてポッドを動的に置き換えることができるように設計されています。つまり、ステートフル アプリケーションなどの特別な予防措置を講じない限り、ポッド IP アドレスは永続的ではありません。この問題を解決し、ポッド間の通信が維持されるようにするために、Kubernetes はサービスを使用します。

Kubernetes サービスはポッドの状態を管理し、時間の経過に伴ってポッドの IP アドレスを追跡できるようにします。これらのサービスは、単一の仮想 IP (クラスター IP) をポッド IP のセットに割り当てることで、ポッド アドレスを抽象化します。その後、仮想 IP に送信されたトラフィックは、関連付けられたポッドに分散されます。

このサービス IP を使用すると、全体的な通信に影響を与えることなく、必要に応じてポッドを作成および破棄できます。また、Kubernetes サービスはクラスター内ロードバランサーとして機能し、必要に応じて関連するポッド間でトラフィックを分散することも可能になります。

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

ほとんどの展開に必要な最終的なネットワーク シナリオは、インターネットとサービスの間です。 Kubernetes を内部アプリケーションまたは外部アプリケーションに使用する場合は、通常、インターネット接続が必要になります。この接続により、ユーザーはサービスにアクセスし、分散したチームが共同作業できるようになります。

外部アクセスを設定するときは、出力と入力という 2 つの手法を使用する必要があります。ホワイトリストまたはブラックリストを使用してこれらのポリシーを設定し、ネットワークに出入りするトラフィックを制御できます。

  • 出力: 出力は、ノードから外部接続にトラフィックをルーティングするプロセスです。これは通常、仮想プライベート クラウド (VPC) に接続されたインターネット ゲートウェイを介して行われます。このゲートウェイは、ネットワーク アドレス変換 (NAT) を使用して、ユーザーとノードが存在するマシン間の IP をマッピングします。ただし、ノード上の個々のポッドにマッピングすることはできません。このステップでは、Kubernetes は IP テーブルとクラスター IP を使用して通信を完了します。
  • Ingress: Ingress は Egress の逆のプロセスであり、外部クライアントから Kubernetes サービスへの通信が含まれます。これは、サービスとの通信でどの接続が許可され、どの接続がブロックされるかを定義する一連のルールとして機能します。

結論は

Kubernetes ネットワークを使用すると、k8s ネットワーク内での通信を構成できます。フラットなネットワーク構造に基づいており、ホストとコンテナ間のポート マッピングは必要ありません。ただし、このネットワーク モデルを適用するには、Flannel、Project Calico、Weave Net などのサードパーティ ツール (オープン ソースまたは有料) を使用する必要があります。

さらに、Kubernetes ネットワークを構成するときは、従来のネットワークでは発生しない特定のネットワークの側面を考慮する必要があります。これらには、コンテナ間ネットワーク、ポッド間ネットワーク、ポッドとサービス間のネットワーク、インターネットとサービス間のネットワークが含まれます。誤った構成は脆弱性につながる可能性があるため、ネットワークを適切に計画することが重要です。


<<:  2021年、クラウドコンピューティングの大手企業はどのような成果を達成するのでしょうか? 2022 年のクラウド コンピューティング業界はどのようなトレンドを示すでしょうか?

>>:  クラウドネイティブ PostgreSQL クラスター - PGO: 5 分で開始

推薦する

ウェブマスターが1000回話すことは禁じられています。1回だけ話す方が良いです。

話すことは常に最も簡単です。21世紀の新参者として、理論は報酬と交換できることは誰もが知っていますが...

Weibo マーケティングスキルクラス: Weibo コンテンツを目立たせるにはどうすればいいですか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeChatビジネスはW...

ハイブリッドクラウドは再定義されつつある

[[337784]] 【51CTO.com クイック翻訳】業界の専門家は、ハイブリッド クラウドの定...

クライアントの皆さん、SEO アウトソーシングの準備はできていますか? (パート 2)

数日前、王世凡が「お客様!SEOアウトソーシングの準備はできていますか?(パート1)」を共有した後、...

Googleの著作権侵害対策アルゴリズムは人気のUGCウェブサイトには影響しない

Googleの広報担当者はThe Vergeに対し、同社の最新の著作権侵害対策アルゴリズムは、有名な...

#推奨事項#: 安価な大容量ハードドライブ VPS とストレージ VPS をいくつか挙げます

今日は、大容量ハードドライブ VPS、いわゆるストレージ VPS についてお話ししましょう。多くの人...

ガートナー:クラウドは2025年までに普及し、企業のデジタル化の基盤となる

COVID-19パンデミックの発生以来、人々の生活やビジネス運営は根本的に変化しました。この流行によ...

合心創天:次世代クラウドデスクトップ市場を争う未来の巨人

最近、「十年の塵と土、遥かに白雲に達する」をテーマにした和信創天の次世代クラウドデスクトップVENG...

仮想化とは何ですか?

[[380647]]この記事はWeChatの公開アカウント「Wireless Deep Sea」から...

西安美利芳SEO会社の市場ポジショニング戦略の分析

今日の市場競争はますます熾烈になっています。市場シェアを獲得し、この主要な地位を獲得するために、企業...

servgrid-1g メモリ KVM/20g SSD/2T トラフィック/月額 8 ドル

2日前、Host Catは「servgrid-512MメモリKVM/10g SSD/250gトラフィ...

外部リンクを長期的かつ発展的な観点から見る

ウェブサイトの最適化は、基本的にオンサイトとオフサイトの 2 つの側面から構成されます。今日は外部リ...

フォーティネット、自動化、クラウドネイティブ、完全カバーを備えた新しいクラウドセキュリティ戦略を発表

今日、ビジネスのクラウド化は、企業がデジタル変革とビジネス変革を推進するための重要な手段となっていま...

なぜ電子商取引は「悪循環」から抜け出せないのか?

今年は、eコマースの混乱の年、eコマースの独占の年、そしてeコマースの買収の年という、異例の年になる...

すべてのクラウド アーキテクトが自動化すべき 5 つのこと

クラウド コンピューティングを定義する特性、またはクラウド コンピューティングを従来のデータ センタ...