GCP/GKE VPC 原生网络如何实现对每个 pod 的别名 IP 分配?
就像Google Kubernetes Engine – 网络,每个 Pod 将具有一个来自子网的辅助 IP CIDR 范围的 IP(例如 10.4.1.1)。
Linux 实例中的每个 pod 都有其 veth I/F。pod(i) 的每个 veth(i) 如何链接到运行 pod 的 Linux 机器的网络接口?每个 pod (veth) 都有自己的网络接口连接到 Linux 机器,还是所有 pod 和 veth 接口共享单个 eth0?
根据Google Cloud 上的 Kubernetes 网络表示 Linux 机器的单个 eth0 在 pod 之间共享。然后单个 eth0 具有与其关联的多个辅助别名 IP 地址。那么 Linux 机器如何将数据包分离到每个别名 IP 并将它们路由到相应的 pod/veth?它是否使用 iptable 将别名 IP 映射到 veth?
GKE 文档VM 网络接口中定义的别名 IP 范围没有详细信息。
答案1
pod 的每个 veth 如何链接到运行 pod 的 Linux 机器的网络接口?
GKE 创建网络命名空间连接豆荚veth 与节点的 eth0。
每个 pod(veth)都有自己的网络接口连接到 Linux 机器,还是所有 pod 和 veth 接口共享单个 eth0?
所有 veth 都通过桥接器 (cbr0) 连接到单个 eth0 接口。示意图
Linux 机器如何将数据包分离到每个别名 IP 并将它们路由到相应的 pod/veth?是否使用 iptable 将别名 IP 映射到 veth?
kube-proxy编辑节点上的 iptable 以便将流量路由到适当的 pod。