网络模式对比
网络模式
BGP 模式
基于 BGP 的纯三层网络方案,其会为每个容器(pod)分配一个可路由的 IP,在通信时不需要解包和拆包,因此网络性能损耗小,易于排查和水平扩展
IPIP 模式简介
将一个 IP 数据包套在另一个 IP 包里,使用到了 Linux 提供的隧道技术。可以理解为一个基于 IP 层的网桥,将两个本不通的网络通过点对点连接起来
通往其他节点路由通过 tunl0 网卡出去
VXLAN 模式
VXLAN 与 IPIP 模式类似,只是底层使用 VXLAN 技术来实现转发
已知缺陷
使用宿主机 hostport 或者 hostnetwork 时,会发生 TCP 63s delay 异常,
参考:
- https://github.com/kubernetes/kubernetes/issues/88986
- https://github.com/projectcalico/calico/issues/3145
- https://github.com/projectcalico/calico/issues/4865
- https://github.com/coreos/flannel/issues/1243
- https://github.com/flannel-io/flannel/issues/1279
- https://github.com/rancher/rke2/issues/1541
- https://github.com/kubernetes-sigs/kubespray/issues/8992
- https://docs.rancher.cn/docs/rke2/known_issues/_index/#calico-%E4%B8%8E-vxlan-%E5%B0%81%E8%A3%85
- https://lyyao09.github.io/2022/03/19/k8s/K8S%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5-Calico%E7%9A%84Vxlan%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%8A%82%E7%82%B9%E5%8F%91%E8%B5%B7K8s%20Service%E8%AF%B7%E6%B1%82%E5%BB%B6%E8%BF%9F/
需要升级内核到 5.6.13, 5.4.41, 4.19.123, 4.14.181
部署文件参考
export INST_CALICO_VERSION=v3.26.1
# BGP
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/${INST_CALICO_VERSION}/manifests/calico-vxlan.yaml
# vxlan
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/${INST_CALICO_VERSION}/manifests/calico-vxlan.yaml
参考资料
-
https://smallcoderhujin.github.io/blog/2022/09/16/calico-bird/
-
ipip & bgp 性能测试
https://zhdya.gitee.io/zhdya/2020/10/01/calico%20ipip&bgp%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/