k8s学习--负载均衡器matelLB的详细解释与安装

文章目录

    • MetalLB介绍
    • [什么是 MetalLB](#什么是 MetalLB)
    • [MetalLB 的用途](#MetalLB 的用途)
    • [MetalLB 的工作模式](#MetalLB 的工作模式)
      • [Layer 2 模式](#Layer 2 模式)
      • [BGP 模式](#BGP 模式)
    • [MetalLB 的应用场景](#MetalLB 的应用场景)
  • 安装matelLB

MetalLB介绍

什么是 MetalLB

MetalLB 是一个专为 Kubernetes 设计的负载均衡器,实现了对外部流量的负载均衡,特别适用于在裸机(bare metal)环境中运行的 Kubernetes 集群。通常,云提供商会提供内置的负载均衡服务,但在裸机环境中,缺少类似的服务。MetalLB 填补了这个空白,为裸机 Kubernetes 集群提供了一种简单且有效的负载均衡解决方案。

MetalLB 的用途

外部流量负载均衡: 使 Kubernetes 集群中的服务能够通过外部 IP 地址进行访问。

高可用性: 通过负载均衡多个节点和服务实例,提高服务的可用性和可靠性。

**易于集成:**与 Kubernetes 原生的服务类型(如 LoadBalancer)无缝集成,简化了配置和管理。

MetalLB 的工作模式

MetalLB 支持两种主要的运行模式:Layer 2 模式和 BGP 模式。

Layer 2 模式

Layer 2 模式不需要任何特殊的网络设备或配置,是最简单的部署方式。
分配 IP 地址: MetalLB 从预先定义的 IP 地址池中分配 IP 地址给 LoadBalancer 服务。
ARP 通告: 当有请求进入时,MetalLB 使用 ARP(Address Resolution Protocol)通告,将请求路由到正确的节点。
流量分发: MetalLB 根据 ARP 通告,将外部流量分发到相应的服务实例。

BGP 模式

BGP(Border Gateway Protocol)模式适用于有路由器或交换机等网络设备支持 BGP 的环境。
BGP 会话: MetalLB 与网络设备建立 BGP 会话,通告负载均衡 IP 地址。
路由配置: 通过 BGP,MetalLB 动态地将流量路由到 Kubernetes 集群中的节点。
高效路由: BGP 模式能够实现更加高效和灵活的流量路由,适用于复杂的网络环境。

MetalLB 的应用场景

裸机 Kubernetes 集群: 没有云提供商负载均衡器支持的环境,通过 MetalLB 实现外部流量的负载均衡。

私有云: 在私有云环境中,通过 MetalLB 提供类似公有云的负载均衡功能。

混合云部署: 在混合云环境中,结合使用云提供商的负载均衡器和 MetalLB,提供统一的流量管理。

安装matelLB

环境

环境

Ip 主机名 cpu 内存 硬盘
192.168.10.11 master01 2cpu双核 4G 100G
192.168.10.12 worker01 2cpu双核 4G 100G
192.168.10.13 worker02 2cpu双核 4G 100G

版本centos7.9

已部署k8s-1.27

1. 修改kube-proxy代理模式

复制代码
kubectl edit configmap kube-proxy -n kube-syste

更改两处

strictARP 后的flase改为true

node 后添加ipvs

没看见往下翻

重启

复制代码
kubectl rollout restart daemonset kube-proxy -n kube-system	

2.metallb部署

复制代码
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml

服务器连接不了时,可在vpn连接后,浏览器中访问https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml

看到内容后复制创建文件

也可以使用离线下载后的文件部署

复制代码
kubectl apply -f metallb-native.yaml

查看

复制代码
kubectl -n metallb-system get pod

等待一会,可通过查看描述信息跟踪pod的运行状态,长时间无法完成下载时,各节点重启docker

复制代码
kubectl -n metallb-system describe pod controller-6b9fd67ff4-rzvg2

3. IP地址池准备

复制代码
vim ippool.yaml

addresses下是范围

复制代码
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: ippool
  namespace: metallb-system
spec:
  addresses:
  - 192.168.10.240-192.168.10.250

yaml应用

复制代码
kubectl apply -f ippool.yaml

若出现故障提示,等上面pod全部运行起来再部署

还不行,各节点重启docker

查看地址池信息

复制代码
kubectl -n metallb-system describe ipaddresspools.metallb.io ippool

4.开启二层通告

复制代码
vim L2.yaml

apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: example
  namespace: metallb-system

应用yaml

复制代码
kubectl apply -f L2.yaml 

安装完成

相关推荐
云上艺旅15 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
你觉得20515 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
A旧城以西16 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
无所谓จุ๊บ16 小时前
VTK知识学习(50)- 交互与Widget(一)
学习·vtk
FAREWELL0007516 小时前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法
吴梓穆17 小时前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
ghostwritten17 小时前
Run Milvus in Kubernetes with Milvus Operator
容器·kubernetes·milvus
Three~stone17 小时前
MySQL学习集--DDL
数据库·sql·学习
齐尹秦17 小时前
HTML 音频(Audio)学习笔记
学习
瞌睡不来18 小时前
(学习总结32)Linux 基础 IO
linux·学习·io