行至水穷处 坐看“云”起时

Cloud Native ADN -> CNadn.Net

F5-k8s解决方案(2)-基于Calico BGP网络的F5 k8s容器平台方案实践

Calico是k8s诸多网络解决方案中比较优秀的一种,使用起来比较容易,且性能也很优秀,支持IPIP的隧道模式,也支持基于路由的全三层方案,特别是三层方案由于不需要额外的隧道开销,使其性能优秀,路由方案只支持BGP路由,这可能多少限制了一些其使用场景,特别是如果企业现有路由方案不是BGP的话,涉及到比较复杂的路由设计与分发考虑,但是由于k8s平台大部分情况下会是独立建设,因此对于数据中心运维人员来说,单纯的路由问题将会是比较熟悉的领域,因此建设难度并不会过于复杂。

F5是应用交付领域的领导者,凭借其优秀的3-7层控制性使得F5非常适合对应用进行发布和控制,典型的表现在应用路由控制、应用协议控制、灰度发布等。 F5通过在k8s环境下运行控制容器实现与k8s等容器方案的集成,可以替换或增强k8s现有的业务服务发布方法,例如替换Ingress Controller或将cluster方式的service发布到F5 BIGIP上,充分发挥F5服务接入的高级功能,如应用安全、复杂协议控制、应用级监控检查、限流、应用可视化等,对比Nginx有多达20-30种场景可以更好的让k8s适应企业复杂应用场景。

以下测试模拟Calico BGP路由协议与F5动态路由实现F5直接互通容器pod网络,实现F5对K8S服务的直接发布。

两台k8s主机,启用calico BGP路由方案。 k8s主机在同一个2层网络,F5也在同一个2层,模拟基于以太网模型的calico BGP方案。

《F5-k8s解决方案(2)-基于Calico BGP网络的F5 k8s容器平台方案实践》

1.Calico关闭ipip模式,改为使用BGP路由模式。

2.配置calico 全局 bgp peer

3.F5上配置:
1). 在route domain下启动 BGP
2). 进入路由模块做最简配置:

3.1 bgp邻居建立后

可以看到F5上已经有到pod的BGP路由了

3.2 如果尝试将F5 VIP 注入到BGP的话,可以在k8s节点上看到VIP的路由

4. 做一些ping测试进行验证:

5. 部署F5 bigip ctlr 容器,以及发布一个configmap 资源

《F5-k8s解决方案(2)-基于Calico BGP网络的F5 k8s容器平台方案实践》
路由已经打通,F5直接可以访问到pod节点
《F5-k8s解决方案(2)-基于Calico BGP网络的F5 k8s容器平台方案实践》
访问VS成功

6. 其它输出:

对于F5在k8s上的网络模型对接选型:

•如果一定要考虑隧道模型,那么选flannel vxlan (canal也可以),vxlan模型F5上需要注入太多静态arp条目,当容器实例很多的时候这是一个需要考虑的问题
•如果集群规模很小,flannel host-gw可选,F5上使用静态路由指向各个pod网络

•Calico的BGP路由模型适合较大的k8s集群,网络上对接更容易,F5路由模块可直接互通pod网络。 同时还可以继续保留Calico的对networ policy支持属性,可以实现较好的容器访问控制,加上F5的分区配置隔离,可以比较方便的实现租户隔离。 关于租户隔离方面文章请参考博客中其它文章。
•且双机时候不用考虑 flannel vxlan模型下备机tunnel不建立问题。

•Calico由于是动态路由,pod本身也可以访问F5注入的vip, 这样很适合让容器访问其它外部的资源。且calico在路由模式下性能很好,推荐优先考虑calico

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注