第1章 ネットワークについて
OpenShift Container Platform において、回復性、安全性、スケーラビリティーの高いアプリケーションを構築するためには、ネートワークについて理解することが必要不可欠です。基本的な Pod 間通信から複雑なトラフィックルーティングやセキュリティールールまで、アプリケーションのあらゆるコンポーネントは、正常に機能するためにネットワークに依存しています。
次の図は、Amazon Web Services (AWS) の外部クライアントがクラスター内の Pod に接続する際の、ネットワークコンポーネント間の外部および内部ネットワークトラフィックの流れを示しています。
図1.1 ネットワークコンポーネント間のトラフィックフローを示す図
1.1. コアネットワーク層とコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Networking は、Pod ネットワークとサービスネットワークという 2 つの基本的なレイヤーに基づいて構築されています。Pod ネットワークは、アプリケーションが存在する場所です。サービスネットワークは、アプリケーションへのアクセスを確実なものにするために必要です。
- Pod ネットワーク
Pod ネットワークは、クラスター内のすべての Pod が一意の IP アドレスを受け取るフラットなネットワーク領域です。このネットワークは、Container Network Interface (CNI) プラグインによって管理されます。CNI プラグインは、各 Pod をクラスターネットワークに接続する役割を担います。
この設計により、Pod はどのノードで実行されているかにかかわらず、IP アドレスを使用して互いに直接通信できるようになります。しかし、これらの Pod の IP アドレスは一時的なものです。これは、Pod が破棄されると IP アドレスが破棄され、新しい Pod が作成されると新しい IP アドレスが割り当てられることを意味します。そのため、長時間の通信では Pod の IP アドレスに直接依存しないでください。
- サービスネットワーク
サービスは、ClusterIP と呼ばれる単一の安定した仮想 IP アドレスと、Pod の論理グループの DNS 名を提供するネットワークオブジェクトです。
サービスのクラスター IP にリクエストが送信されると、OpenShift Container Platform は、そのサービスを支える正常な Pod のいずれかにトラフィックを自動的に負荷分散します。OpenShift Container Platform は、Kubernetes のラベルとセレクターを使用して、どの Pod がどのサービスに属しているかを追跡します。この抽象化により、Pod にアクセスしようとするアプリケーションに影響を与えることなく、個々の Pod を作成または破棄できるため、アプリケーションの耐障害性が向上します。