
GCP/GKE VPC ネイティブ ネットワークは、各ポッドへのエイリアス IP 割り当てをどのように実装しますか?
例えばGoogle Kubernetes Engine – ネットワーキング各ポッドには、サブネットのセカンダリ IP CIDR 範囲 (例: 10.4.1.1) からの IP が割り当てられます。
Linux インスタンスの各ポッドには、veth I/F があります。pod(i) の各 veth(i) は、ポッドが実行される Linux ボックスのネットワーク インターフェイスにどのようにリンクされますか? 各ポッド (veth) には、Linux ボックスに接続された独自のネットワーク インターフェイスがありますか、それともすべてのポッドと veth インターフェイスが単一の eth0 を共有しますか?
によるとGoogle Cloud 上の Kubernetes ネットワークLinux ボックスの単一の eth0 がポッド間で共有されていることを示します。次に、単一の eth0 には、複数のセカンダリ エイリアス IP アドレスが関連付けられています。では、Linux ボックスはどのようにしてパケットを各エイリアス IP に分離し、対応するポッド/veth にルーティングできるのでしょうか。エイリアス IP を veth にマップするために iptable を使用しているのでしょうか。
GKE ドキュメントVM ネットワーク インターフェースで定義されたエイリアス IP 範囲詳細はありません。
答え1
ポッドの各 veth は、ポッドが実行される Linux ボックスのネットワーク インターフェイスにどのようにリンクされますか?
GKEはネットワーク名前空間接続するポッドのノードの eth0 と veth を接続します。
各ポッド (veth) には Linux ボックスに接続された独自のネットワーク インターフェイスがありますか、それともすべてのポッドと veth インターフェイスが単一の eth0 を共有しますか?
すべての veth はブリッジ (cbr0) を介して単一の eth0 インターフェースに接続されます。概略図
Linux ボックスはどのようにして各エイリアス IP へのパケットを分離し、対応するポッド/veth にルーティングするのでしょうか? エイリアス IP を veth にマッピングするために iptable を使用しているのでしょうか?
kubeプロキシトラフィックを適切なポッドにルーティングするために、ノード上の iptable を編集します。