Kubernetesネットワーキングについてもう少し理解しようとしています。そのため、Google Cloudにクラスターをデプロイし、ネットワーキングを確認しました。gcloudcontainer clusters describe cluster0 | grep -i cidr
clusterIpv4Cidr: 10.20.0.0/14 # --cluster-cidr
nodeIpv4CidrSize: 24
servicesIpv4Cidr: 10.23.240.0/20 # --service-cluster-ip-range
したがって、最初はポッドIPの場合です。
First IP: 10.20.0.1
Last IP: 10.23.255.254
サービス
First IP: 10.23.240.1
First IP: 10.23.255.254
ポッドの範囲にサービスIPの範囲が含まれているのは常にこのようですか?同じネットワーク層を使用していますか?
Kubernetes network がどのように作成されるかは長い話です...
Kubernetesは、ポッドが到達するホストに関係なく、ポッドが他のポッドと通信できることを前提としています。すべてのポッドは独自のIPアドレスを取得するため、ポッド間のリンクを明示的に作成する必要はなく、コンテナポートのホストポートへのマッピングを処理する必要もほとんどありません。これにより、ポートの割り当て、ネーミング、サービスディスカバリ、ロードバランシング、アプリケーション構成、移行の観点から、ポッドをVMまたは物理ホストのように扱うことができる、後方互換性のあるクリーンなモデルが作成されます。
Kubernetesは、プライベートとパブリックの両方のアクセス可能なIPアドレスを使用します。現時点では、パブリックIPアドレスは言及されていません。
Kubernetesはアドレスのプライベートプールを使用して、クラスター内の通信を提供します。すべてのポッドとサービスにはプライベートIPアドレスがあります。 Kubernetesのサービスは仮想です-それらはNATによって作成され、iptablesはアドレス指定されたサービスからポッドへのポートリダイレクトを作成します。
クラスター内の通信の基本ルール:
あなたの質問について:公式 Kubernetesネットワーク ドキュメントの状態:
--service-cluster-ip-range ipNet - A CIDR notation IP range from which to assign service cluster IPs. This must not overlap with any IP ranges assigned to nodes for pods.
そのため、ポッドで使用されるのと同じ範囲のサービスIPを持つことはお勧めしません。
Kubernetesネットワーキングに関するビデオ を見るか、または 図解付きのガイド を見ることを強くお勧めします。
clusterIpv4Cidr: 10.20.0.0/14 # IP subnet which is configured on all pods.
nodeIpv4CidrSize: 24 # CidrSize which is configured on each node
servicesIpv4Cidr: 10.23.240.0/20 # IP subnet which is configured for Services
ポッドから見ると、他のすべてのポッドとサービスは同じサブネット上にあるため、直接到達可能です。これは、ゲートウェイの構成とルーティングが関与していないことを意味します。ちなみに、serviceIpv4CiderがclusterIPv4Ciderの範囲外の場合は、ゲートウェイの構成とルーティングが必要です。それは何か違うものです。
したがって、以下の警告は、service-cluster-ip-rangeをポッドに使用してはならないことを示していますが、それらがclusterIPv4Ciderの範囲と重複していることは問題ありません。それは意図されています。
「これは、ポッドのノードに割り当てられたIP範囲と重複してはなりません。」