Pod访问ApiServer是通过访问K8S对应的Service IP来实现的,Service的后端对应集群的管理节点IP。嵌套场景中虚拟机有两种网络:管理网、数据网,且都是虚拟网络。我们通过networkpolicy或者路由器将这两个虚拟网络打通,实现三层通信。这样Pod在访问k8s service IP时,流量会转发到管理ip,此时由于管理网和pod网络已经三层打通,可以直接通信。
非嵌套场景中管理网络正常都是物理网络,我们无法通过networkpolicy或者路由器将它和Pod网路打通。在pod访问k8s service ip时,流量转换成访问管理IP,但是由于pod网络是一个私有网络,和物理网络是隔离的。这里通过link-local将访问的数据包执行snat,使得源地址改成Vhost0 IP。此时只需要在物理设备里将数据网络和管理网打通,就可以通过vhost0 IP来访问apiserver了