概要
フラットモード ネットワーク モデルには、静的モード ネットワークと動的モード ネットワークの 2 種類があります(Border Gateway Protocol を使用)。ノードが単一のレイヤ 2 ドメインにまたがる場合は、静的フラットモードを使用できます。複数のレイヤ 2 ドメインにまたがるノードの場合は、BGP でフラット IP モードを使用します。
フラットモード ネットワーク モデルでは、Pod にクラスタ間で一意の IP アドレスがあります。割り振られた Pod の CIDR が一意であり、他のサブネットと重複していないことを確認します。たとえば、IP アドレスは他のクラスタでノードや他の Pod の CIDR に使用される IP アドレスと重複してはいけません。これらの IP アドレスには外部からアクセスできるため、どのノードの Pod でも他のすべてのノードのすべての Pod と通信できます。Pod から外部 IP アドレスへの通信にネットワーク アドレス変換(NAT)は必要ありません。フラットモード ネットワーク モデルと、デフォルトのアイランド ネットワーク モデルとの比較については、フラットモードとアイランド モードのネットワーク モデルをご覧ください。
IP アドレス空間が大きく、クラスタに固有の Pod CIDR を割り振れる場合は、フラットモード ネットワーク モデルを使用します。ClusterCIDRConfig を使用して、Pod CIDR を動的に構成できます。ClusterCIDRConfig は、クラスタの作成後に追加または削除できます。ClusterCIDRConfig の詳細と使用例については、ClusterCIDRConfig カスタム リソースについてをご覧ください。
BGP を使用したフラットモードの詳細については、BGP サポートを使用するフラットモード ネットワーク モデルを実装するをご覧ください。
Pod IP アドレスのネットワーク到達性について
IPv4 の静的フラット ネットワーク モードでは、Pod IP アドレスのネットワーク到達性は、Address Resolution Protocol(ARP)パケットに基づいています。したがって、Pod の IP アドレスは、Pod が同じレイヤ 2 ドメイン内にある場合にのみ到達可能です。ノードは同じレイヤ 2 ドメインに属している必要があります。Pod に指定する IP アドレス(ClusterCIDRConfig を使用)は、クラスタノードと同じサブネット内に存在する必要があります。構成した Pod CIDR は、ノードのサブネットからのものである必要があります。たとえば、222.1.0.0/16 サブネットがクラスタ内のノードで使用されると、そのサブネット内でより小さいサブネット(222.1.2.0/24)を Pod に選択します。クラスタ内の他のリソースが、Pod に割り振られた範囲の IP アドレスを使用していないことを確認します。
次のセクションでは、IPv4 のフラットモード ネットワークの構成について説明します。
静的フラットモード ネットワークを実装する方法
デフォルトでは、Google Distributed Cloud クラスタはアイランドモードのネットワーキングで作成されます。このセクションでは、クラスタ用にフラットモード ネットワーキングを設定する方法について説明します。
フラットモード ネットワーク モデルでクラスタをデプロイするには、クラスタ構成ファイルに以下の変更を加えます。
フラットモード ネットワーキングは、クラスタの作成時にのみクラスタで有効にできます。フラットモード ネットワーキングを使用して新しいクラスタを作成する手順は次のとおりです。
クラスタ構成ファイルを編集して
clusterNetwork.flatIPv4
を追加し、それをtrue
に設定します。フラットモード ネットワークを有効にすると、クラスタ構成ファイル(
clusterNetwork.pods.cidrBlocks
)で指定された Pod CIDR は無視されます。ClusterCIDRConfig マニフェストをクラスタ構成ファイルに追加します。
ClusterCIDRConfig マニフェストに次の情報を設定します。
metadata.namespace
: クラスタの Namespace。spec.ipv4.cidr
: クラスタ内の Pod に使用する CIDR ブロック形式の IP アドレス範囲。この範囲は、クラスタノードと同じサブネットに存在する必要があります。perNodeMaskSize
: クラスタ作成のプリフライト チェックでは、perNodeMaskSize
値がmaxPodsPerNode
で指定された Pod 数をプロビジョニングするのに十分であることを確認します。nodeSelector
:nodeSelector
値に一致するノードラベルがない場合、ノードの調整は保留のままとなり、クラスタの作成は完了しません。
次のクラスタ構成ファイルからの抜粋は、BGP をサポートしないフラットモード ネットワーキングを実装する方法を示しています。この抜粋に表示される CIDR は一例であり、独自の CIDR に置き換える必要があります。CIDR を独自のものに置き換える場合は、Pod IP アドレスのネットワーク到達性についてで示されているように、Pod のネットワーク到達性の基準を満たしていることを確認してください。
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: flat-mode
namespace: cluster-flat-mode
spec:
... (other cluster config omitted)
...
# Cluster networking configuration
clusterNetwork:
flatIPv4: true
services:
cidrBlocks:
- 10.96.0.0/12
... (other cluster config omitted)
...
---
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: ClusterCIDRConfig
metadata:
name: cluster-wide-1
namespace: cluster-flat-mode
spec:
ipv4:
cidr: "222.1.0.0/16"
perNodeMaskSize: 24
制限事項
Google Distributed Cloud の静的フラットモード ネットワークには、次の制限があります。
フラットモード ネットワークを使用する Pod は、単一のレイヤ 2 ドメイン内で到達可能になります。クラスタ内でなくても、レイヤ 2 ドメインにある他のマシンも Pod に到達できます。デュアルスタック クラスタが作成される場合や、IPv6 が BGP なしのフラットモードにある場合、この制限は IPv6 にも適用されます。詳細については、Pod IP アドレスのネットワーク到達性についてをご覧ください。
Google Distributed Cloud IPAM コントローラは、構成された Pod CIDR 内の IP アドレスの可用性を追跡します。他のデバイスですでに使用されている IP は追跡されません。したがって、レイヤ 2 ドメイン内の他の IP は、Pod CIDR と干渉しないようにする必要があります。詳細については、Pod IP アドレスのネットワーク到達性についてをご覧ください。