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

Cloud Native ADN -> CNadn.Net

F5 k8s解决方案(1)- 基于 flannel vxlan模型的K8S解决方案

方案思路:

BIGIP通过与node节点构建vxlan网络实现F5与pod网络的直接通信。

前置要求:

1.BIGIP有一个网络须与k8s节点在一个二层上,在这个二层之上构建vxlan,这不是BIGIP的限制,而是flanne vxlan网络模型的设计要求。

2.BIGIP须与k8s中node节点的internalIP构建vxlan,即flannel的vxlan vtep接口要是k8s集群本身所用的接口。如果不是同一接口,可采用https://github.com/myf5/k8s-bigip-ctlr 补丁即可,编译好的docker镜像在 myf5/k8s-bigip-ctlr:1.7.1

配置步骤:

  1. F5上配置vxlan profile
  2. 配置vxlan tunnel
  3. 配置vxlan tunnel self IP (选择一个flanne管理的网络,且该网络与node节点不要重复,这里的tunnel selfip 等同于node节点上的flannel.1接口地址,一般为16位掩码)
  4. 使用kubectl 将bigip作为一个伪node节点加入到k8s集群中,节点中使用annotation指明flannel所需配置
  5. 部署bigip-ctrl(cc)

其它提示:

  • 在将bigip作为k8s node加入时候,需要指明tunnel的MAC地址以及tunnel的vtep地址
  • cc配置中需指明vxlan tunnel名称
  • cc会自动的增加k8s各个节点vtep的静态FDB表以及各个pod的静态arp表(如果是clusterip模式发布的话)
  • HA,N+M的场景,BIGIP需要与独立的CC配合,每个BIGIP独立更新,不依赖BIGIP自身的同步,HA场景示例将在单独博文中讲解,本例只考虑单机情形

具体配置:

部署一个F5 configmap实现服务的注入

部署后,F5上相关arp及FDB表输出

F5配置注入结果

Pool的健康状态为up,说明vxlan网络工作已正常,F5已经可以直接与pod通信

Calico BGP解决方案请访问这里

点赞

发表评论

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