EKS 的控制面是托管的。当使用AWS VPC CNI时,POD的地址是VPC里ENI的primary地址或secondary 地址。POD之间的通信是直接在VPC network上进行的。
AWS VPC CNI不支持networking policy.
Calico CNI 的网络是overlay的,依靠POD之间通过VPC网络建立隧道(IPIP 或VXLAN).
Calico CNI支持networking policy.
Overlay networking的缺点
- 复杂,
VPC overlay在数据中心物理设备上
Calico 以IPIP或VXLAN overlay在VPC上。
2. 一下AWS VPC本身网络相关的功能不能工作了。
VPC Flow Logs don’t work
需要依靠Calico 发送的Flow Log.
3. Security Groups don’t work
Security Group 看不到 overlay这层的IP,所以Security Group不能工作
4. 违背了上云的原则
没法把overlay network管理这个责任托管给AWS.
5. EKS 的一些功能不能工作
- 因为EKS的控制面是托管的,他需要一张ENI然后通过api server proxy来实现与外部的通信,当使用Calico CNI后,一切依赖API server proxy的功能不再功能,这些功能包括比如1. 使用集群外部的普罗米修斯(Prometheus),2. 依靠mutation admission controller admission web hooks的 3. service mesh : service mesh也大量使用api proxy server,比如sidecar 自动注入POD。