容器云负载均衡之六:将IPVS容器化并扩展为Openshift的服务

释放双眼,带上耳机,听听看~!

一、前言

在文章《容器云平台负载均衡解决方案的一些思考》中提到“基于kubernetes nodeport service的IPVS负载均衡”非常适合基于Openshift/kubernetes的容器云的数据层面的负载均衡解决方案。本文对将IPVS容器化以及将IPVS用于部署在Openshift平台的服务的负载均衡所要涉及的技术点进行简要分析。

转载自https://blog.csdn.net/cloudvtech

二、技术点分析

3.1 构建IPVS docker镜像

Dockerfile需要设置如下环境信息:

安装如下软件包:

将/sys/fs/cgroup挂载进来之后,/etc/init.d/functions可以顺利运行:

3.2 部署基于kubernetes的IPVS service

在IPVS service部署的时候,由于是基于keepalived做VIP的管理,所以需要至少两台在openshift worker node上运行IPVS POD进行active-standby模式的冗余来保证HA。由于需要keepalived的VRRP协议保证VIP的floating,所以需要修改iptables允许VRRP的协议端口进行通信。

并且由于运行keepalived配置IPVS需要对宿主机的内核和网络配置的操作权限,所以POD需要运行在host network和特权模式。

由于需要选择特定的节点部署IPVS director,所以需要对节点打label,并且由于需要保证每个节点至多只有一个IPVS POD,所以应该以daemonset的方式部署IPVS service。

3.3 在容器内配置keepalived

keepalived在运行的时候需要多种信息,这些信息一部分将来自于IPVS service在Openshift部署的时候ConfigMap的输入,另外一部分将动态从Openshift Master获取。这样的话就要求在IPVS容器里面能够运行kubectl,所以IPVS POD必须以以一个特定权限的service account去部署才行。另外IPVS POD里面必须要有一个daemon进程去动态监测后端service的变化来动态更新keepalived的配置进而更新IPVS的转发策略。

3.4 在容器内运行keepalived

在容器起来的时候需要插入iptables规则来允许特定的traffic;在容器停止之前候需要清理掉这些附加的iptables规则。

容器内要有一个daemon process来持续跟踪需要IPVS做load balance的后端service的部署状态,这些状态需要由这个process转化成keepalived的配置文件,然后在不停止IPVS服务的情况下将新的配置载入到IPVS中。同时,借助keepalived,会持续跟踪active IPVS director的状态,如果active IPVS director停止响应,backup IPVS director需要变成active模式对外服务。

转载自https://blog.csdn.net/cloudvtech

给TA打赏
共{{data.count}}人
人已打赏
安全经验

Google AdSense 全面解析(申请+操作+作弊+忠告)

2021-10-11 16:36:11

安全经验

安全咨询服务

2022-1-12 14:11:49

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索