コンテナ クラウド アーキテクチャ | 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 分で開始

推薦する

可観測性を超えた3つの柱についてお話ししましょう

可観測性は、多くの場合、ログ、メトリック、トレースの 3 つの柱のコンテキストで定義されます。最新の...

検索エンジンのブラックハット不正行為から逃れ、サイトランキングの自然な向上を促す(パート3)

また新しい日が始まりました。検索エンジンのブラックハットの不正行為から逃れ、サイトランキングの自然な...

Host1plus - 2019年4月のフルサイトプロモーションクーポンコード(仮想ホストとVPSを含む)

host1plus.com の 4 月の定期プロモーション クーポン コードが公開されました。VPS...

spinservers: 試験運用が開始されたばかりのサンノゼ VPS の簡単なレビュー

spinserversはこれまでサンノゼとダラスのデータセンターで主に独立サーバー事業を展開してきた...

ベストランキングの基本的な最適化を行うことが重要です

最高のウェブサイトランキングを達成するということは、実際にはウェブサイトのキーワードを検索エンジンの...

#サイバーマンデー# ブルーホスト - 50% オフ/100% 本物のクラウド VPS/オープンスタック/無制限のトラフィック

Bluehost のこれまでの最高のプロモーションは、サイバーマンデーです。仮想ホスティングは最大 ...

クラウドネイティブデイズ成都駅、ファーウェイのクラウド専門家がクラウドネイティブテクノロジーの饗宴にご招待

近年のクラウドネイティブ コンセプトの急速な普及と、企業のデジタル変革のための新しい IT 思考と新...

Kubernetes をより良くする 22 のオープンソース ツール

これらの Kubernetes ヘルパー ツールを活用して、アプリケーション定義の簡素化、監視の強化...

新たなドメイン名ビジネス: ICANN の新規則がインターネットドメイン名をめぐる争いを引き起こす

6月14日、非営利の国際組織であるインターネットネーム・番号割当機関(ICANN)は、新しい汎用トッ...

domain.comは無料の共同ドメインと3か月間の無料ホスティングを提供しています

domain.com は買収されて以来、大きな割引を行っていません。それ以前は、domain.com...

Argo CD を使用して GitOps パイプラインを変換する

Argo CD は、宣言型 GitOps コンセプトに従う Kubernetes の継続的デプロイメ...

ウェブサイト内部の最適化の詳細プロセス(純粋なホワイトハットSEO)

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスウェブサイトのランキング...

「壊れた駅」フォーラムの第1ラウンドが終了し、賞品が配布されました。皆さんありがとうございました

2017年8月3日に、以前のホスティングcatフォーラム(fluxbbで構築され、2年以上使用されて...