| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Kubernetes负载均衡器:Metallb -> 正文阅读 |
|
[网络协议]Kubernetes负载均衡器:Metallb |
一. 概述在使用kubenetes的过程中,如何将服务开放到集群外部访问是一个重要的问题。当使用云平台(阿里云、腾讯云、AWS等)的容器服务时,我们可以通过配置service为LoadBalancer模式来绑定云平台的负载均衡器,从而实现外网的访问。但是,如果对于自建的kubernetes裸机集群,这个问题则要麻烦的多。 祼机集群不支持负载均衡的方式,可用的不外乎NodePort、HostNetwork、ExternalIPs等方式来实现外部访问。但这些方式并不完美,他们或多或少都存在的一些缺点,这使得裸机集群成为Kubernetes生态系统中的二等公民。 MetalLB旨在通过提供与标准网络设备集成的Network LB实施来解决这个痛点,从而使裸机群集上的外部服务也尽可能“正常运行”,减少运维上的管理成本。 二.?部署要求MetalLB需要以下环境才能运行:
三.?工作原理Metallb包含两个组件,Controller和Speaker,Controller为Deployment部署方式,而Speaker则采用daemonset方式部署到Kubernetes集群各个Node节点。 具体的工作原理如下图所示,Controller负责监听service变化,当service配置为LoadBalancer模式时,从IP池分配给到相应的IP,并进行IP的生命周期管理。Speaker则依据Service的变化,按具体的协议发起相应的广播或应答,根据工作模式(Layer2/BGP)的不同,可采用Leader的方式或负载均衡的方式来响应请求。 当业务流量通过TCP/UDP协议到达指定的Node时,由Node上面运行的Kube-Proxy组件对流量进行处理,并分发到对应的Pod上面。? 四. 工作模式MetalLB支持两种模式,一种是Layer2模式,一种是BGP模式 Layer2模式第2层模式下,Metallb会在Node节点中选出一台做为Leader,与服务IP相关的所有流量都会流向该节点。在该节点上,?kube-proxy将流量传播到所有服务的Pod,而当leader节点出现故障时,会由另一个节点接管。 局限性: 在二层模式中会存在以下两种局限性:单节点瓶颈以及故障转移慢的情况。 单个leader选举节点接收服务IP的所有流量。这意味着服务的入口带宽被限制为单个节点的带宽,单节点的流量处理能力将成为整个集群的接收外部流量的瓶颈。 在当前的实现中,节点之间的故障转移取决于客户端的合作。当发生故障转移时,MetalLB发送许多2层数据包,以通知客户端与服务IP关联的MAC地址已更改。大多数操作系统能正确处理数据包,并迅速更新其邻居缓存。在这种情况下,故障转移将在几秒钟内发生。在计划外的故障转移期间,在有故障的客户端刷新其缓存条目之前,将无法访问服务IP。对于生产环境如果要求毫秒性的故障切换,目前Metallb可能会比较难适应要求。 BGP模式在BGP模式下,群集中的每个节点都与网络路由器建立BGP对等会话,并使用该对等会话通告外部群集服务的IP。假设您的路由器配置为支持多路径,则可以实现真正的负载平衡:MetalLB发布的路由彼此等效。这意味着路由器将一起使用所有下一跳,并在它们之间进行负载平衡。数据包到达节点后,kube-proxy负责流量路由的最后一跳,将数据包送达服务中的一个特定容器。 负载平衡的方式取决于您特定的路由器型号和配置,但是常见的行为是基于数据包哈希值来平衡每个连接,这意味着单个TCP或UDP会话的所有数据包都将定向到群集中的单个计算机。 局限性: 基于BGP的路由器实现无状态负载平衡。他们通过对数据包头中的某些字段进行哈希处理,并将该哈希值用作可用后端数组的索引,将给定的数据包分配给特定的下一跳。 五. 安装部署启用kube-proxy的ARP模式
安装MetalLB相关组件
这会将MetalLB部署到metallb-system?名称空间下的群集中。清单中的组件是:
Layer2模式配置创建configmap
BGP模式配置对于具有一个BGP路由器和一个IP地址范围的基本配置,您需要4条信息:
例如,如果您要给MetalLB范围192.168.10.0/24和AS编号64500,并将其连接到AS编号为64501的地址为10.0.0.1的路由器,则configmap配置如下所示:
六. 功能验证本实例中我们使用上面的Layer2配置来验证功能,并进行访问测试。 创建示例yaml文件,包括svc与deployment
查看SVC状态,已获取到IP 通过外部浏览器访问 七. 项目成熟度MetalLB项目目前处于beta阶段,已被多个人员和公司用于多个生产和非生产集群中。根据错误报告的频率,暂时未发现有较大的BUG。 更详细信息可参见官网:https://metallb.universe.tf |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:46:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |