到目前为止,这个问题其实已经很清楚了。在进一步分析问题之前,我们简单聊一下对控制面和数据面的理解。控制面和数据面模式,可以说无处不在,我们举两个极端的例子。
第一个例子,是DHCP服务器。我们都知道,在局域网中的电脑,可以通过配置DHCP来获取IP地址,在这个例子中,DHCP服务器统一管理,动态分配IP地址给网络中的电脑,这里的DHCP服务器就是控制面,而每个动态获取IP的电脑就是数据面。
第二个例子,是电影剧本和电影的演出。剧本可以认为是控制面,而电影的演出,包括演员的每一句对白、电影场景布置等,都可以看作数据面。
之所以认为这是两个极端,是因为在第一个例子中,控制面仅仅影响了电脑的一个属性,而在第二个例子中,控制面几乎是数据面的一个完整的抽象和拷贝,影响数据面的方方面面。Istio服务网格的控制面是比较接近第二个例子的情况,如图17-6所示。

图17-6 控制面和数据面
Istio的控制面Pilot使用gRPC协议对外暴露接口istio-pilot.istio-system:15010,而Envoy无法从Pilot处获取动态配置的原因是,在所有的Pod中,集群DNS都无法使用。