F5 CIS整体方案
2021-06-28 16:20:17
路瑞强
CIS介绍
CIS原理
最近几年,容器技术的兴起带动了PaaS的发展,XX银行根据自己的业务需要也开始应用PaaS技术。在此背景下,F5也推出了和容器技术的结合方案。F5通过CIS(F5 Container Ingress Services
)和PaaS平台进行对接,实现PaaS平台对F5的管理控制,将F5融入DevOps。
F5的CIS可以和Cloud Foundry、Kubernetes、Mesos marathon、RedHat OpenShift平台进行协同工作,实现用户在PaaS平台中的对接。
目前,CIS是F5在容器方案中的主流产品。容器方案中,目前需要东西向和南北向两种流量的处理,南北向需要容器外部系统参与,东西向需要内部系统参与。F5作为流量控制方案需要打通外部系统和内部系统,CIS就是承担这个作用的产品,针对这个产品,F5会加强该产品的功能和服务,满足用户在容器环境下的流量控制要求。
CIS的网络对接方案
F5目前支持Flannel、Calico方式和k8s环境对接。基于性能和运维方便性考虑,建议采用Flannel host-gw方式。
根据目前XX银行情况,下面对Flannel host-gw和Flannel vxlan方式进行说明。
Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信,Flannel是CoreOS开发,专门用于docker多机互联的一个工具,让集群中的不同节点主机创建的容器都具有全集群唯一的虚拟ip地址。
Flannel为每个host分配一个subnet,容器从这个subnet中分配IP,这些IP可以在host间路由,容器间无需使用nat和端口映射即可实现跨主机通信。每个subnet都是从一个更大的IP池中划分的,flannel会在每个主机上运行一个叫flanneld的agent,其职责就是从池子中分配subnet。
Flannel使用etcd存放网络配置、已分配 的subnet、host的IP等信息。Flannel数据包在主机间转发是由backend实现的,目前已经支持UDP、VxLAN、host-gw、AWS VPC和GCE路由等多种方式。考虑到当前的情况,这里给出Flannel host-gw方式和Flanel VXLAN方式的对接方式。
host-gw模式通过建立主机IP到主机上对应flannel子网的mapping,以直接路由的方式联通flannel的各个子网。这种互联方式通过路由机制,实现flannel网络数据包在主机之间的转发。
在F5和容器的配合中,在F5设备中需要增加所有Node的路由信息。
例如在下面的网络结构中,则在F5设备上增加相应的路由信息即可
VXLAN模式下,每个节点会感知系统里面子网分配的变化并调整相关封装参数或者路,而对于所有加入flannel的节点和container来讲,flannel给它们呈现的是一个平的大三层网络,每个节点获取里面一个小的网段。
容器的访问数据包会通过pod的默认路由进入flannel.1的vxlan设备,这个flannel.1是一个vtep(virtual tunnel end point)设备。flannel.1会根据vxlan的协议标准进行二层封装转发。而二层转发的前提是需要获取远程对应IP的节点的mac地址,由于vxlan设备在查询的mac的时候是不会发送arp信息的,所以这时候flanneld可以从ectd里面获取目的IP所在网段对应的vtep设备的mac地址,这样,linux内核就可以获取目的地IP对应的vxlan设备的mac地址,并进行基于vxlan协议的封装。
在数据包经由vxlan规范封装之后,内核需要知道将这个vxlan包送到哪个节点去。所以需要查询本节点上的vxlan fdb(forwarding database)以获得目的端vtep对应的IP地址,如果未能查询到则flanneld需要向ectd查询并存储到fdb中。这时候vxlan设备就能准确的将数据包经由UDP协议发送至对端的vxlan设备flannel.1了。
Flannel vxlan模式下,F5是以虚拟K8S node节点加入到集群,通过模拟节点是的flannel认为F5是一个普通K8s node节点,进而自动管理彼此间的vxlan。此模式下,cc会自动向F5注入静态FDB和ARP条目。ARP条目会随着服务容器的数量增加而增加。
例如,当k8s的配置信息如下:
则在F5设备上会出现如下的FDB和ARP信息:
在该模式下,F5需要配置vxlan tunnel及vxlan地址。K8s需要添加F5作为node节点,通过CIS读取flannel 网络信息(包括FDB表和静态MAC),自动更新到F5的配置文件中。使得F5能够和flannel vxlan网络通信,最终实现F5能够将业务分发到相应的pod。
CIS安装
网络拓扑图
本方案网络连接方式采用Flannel hostgw。这里说明BIG-IP Controller的具体安装步骤。
CIS控制范围
在K8S环境下,通过在k8s内部运行一个bigip-controller容器,该容器通过读取k8s API获取k8s内的服务资源并将其转化为F5上的配置,每个CIS独立控制F5上的一个对象配置隔离区域(partition),该partition下的资源完全由该CIS独立控制。
CIS可以支持AS3,可以通过AS3来实现多个partition的控制。该方案中可以通过在AS3中配置相应的partition进行配置和管理。
安装步骤
1.上传yaml文件到K8s:K8S主机master(IK8SMS01)上 的f5-host-gw-test目录下,上传了yaml文件
2.启动CIS,执行如下命令:
kubectl create ns f5-host-gw-test
kubectl create sa bigip-ctlr –n f5-host-gw-test
kubectl create secret generic bigip-login --namespace kube-system --from-literal=username=admin --from-literal=password=admin
kubectl create -f f5_rabc.yaml
kubectl create -f f5-k8s-bigip1-ctlr_host-gw.yaml
kubectl create -f f5-k8s-bigip2-ctlr_host-gw.yaml
3.在K8S下发F5 VE配置,执行如下命令:
kubectl create -f f5-host-gw-test-endpoint.yaml
kubectl create -f f5-host-gw-test-svc.yaml
kubectl create -f f5-create-vs.yaml
发布评论 加入社群
相关文章

博文精选 | 三大业界大佬的 DevOps 解决方案
F5小安
2021-12-14 14:36:45 233

博文精选 | 云原生 2.0 时代下,DevOps 实践如何才能更加高效敏捷?
F5小安
2021-09-14 10:21:29 383

NAP作为K8s内部服务代理的部署方式
路瑞强
2021-06-18 23:22:09 1059

回复评论
发布评论