前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kuberntes部署MetalLB负载均衡器

Kuberntes部署MetalLB负载均衡器

原创
作者头像
小陈运维
发布于 2024-06-22 11:03:21
发布于 2024-06-22 11:03:21
2440
举报
文章被收录于专栏:小陈运维小陈运维

Kuberntes部署MetalLB负载均衡器

MetalLB简介

MetalLB是一个为基础 Kubernetes集群提供负载均衡实现的工具,使用标准路由协议。

Kubernetes在基础集群中不提供网络负载均衡器(类型为LoadBalancer的服务)的实现。Kubernetes提供的网络负载平衡器实现都是调用各种IaaS平台(如GCP、AWS、Azure等)的接口代码。如果您没有运行在受支持的IaaS平台上(如GCP、AWS、Azure等),则创建时LoadBalancers将无限期处于“挂起”状态。

在基础集群中,操作员只有两个接口来将用户流量引入他们的集群,“NodePort”和“externalIPs”服务。

这两个选项在生产使用中都有显著的缺点,这使得基础集群成为 Kubernetes 生态系统中的二等公民。

MetalLB旨在通过提供与标准网络设备集成的网络负载均衡器实现来解决这种不平衡,以便基础群集上的external services尽可能“正常工作”。

代码语言:shell
AI代码解释
复制
root@master:~# kubectl get nodes -o wide
NAME           STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE           KERNEL-VERSION     CONTAINER-RUNTIME
k8s-master01   Ready    control-plane   18h   v1.30.2   192.168.1.31   <none>        Ubuntu 24.04 LTS   6.8.0-35-generic   containerd://1.7.18
k8s-master02   Ready    control-plane   18h   v1.30.2   192.168.1.32   <none>        Ubuntu 24.04 LTS   6.8.0-35-generic   containerd://1.7.18
k8s-master03   Ready    control-plane   18h   v1.30.2   192.168.1.33   <none>        Ubuntu 24.04 LTS   6.8.0-35-generic   containerd://1.7.18
k8s-node01     Ready    <none>          18h   v1.30.2   192.168.1.34   <none>        Ubuntu 24.04 LTS   6.8.0-35-generic   containerd://1.7.18
k8s-node02     Ready    <none>          18h   v1.30.2   192.168.1.35   <none>        Ubuntu 24.04 LTS   6.8.0-35-generic   containerd://1.7.18

修改kube-system

如果您正在使用IPVS模式下的kube-proxy,则自Kubernetes v1.14.2起,您必须启用严格的ARP模式。

请注意,如果您使用kube-router作为服务代理,则不需要此操作,因为它默认启用了 strict ARP。

您可以通过编辑当前集群中的kube-proxy配置来实现此操作:

代码语言:shell
AI代码解释
复制
# kubeadm 部署方式 修改kube-system
kubectl get configmap kube-proxy -n kube-system -o yaml | \
sed -e "s/strictARP: false/strictARP: true/" | \
kubectl apply -f - -n kube-system


# 二进制 部署方式 修改kube-system
cat > /etc/kubernetes/kube-proxy.yaml << EOF
apiVersion: kubeproxy.config.k8s.io/v1alpha1
bindAddress: 0.0.0.0
clientConnection:
  acceptContentTypes: ""
  burst: 10
  contentType: application/vnd.kubernetes.protobuf
  kubeconfig: /etc/kubernetes/kube-proxy.kubeconfig
  qps: 5
clusterCIDR: 172.16.0.0/12,fc00:2222::/112
configSyncPeriod: 15m0s
conntrack:
  max: null
  maxPerCore: 32768
  min: 131072
  tcpCloseWaitTimeout: 1h0m0s
  tcpEstablishedTimeout: 24h0m0s
enableProfiling: false
healthzBindAddress: 0.0.0.0:10256
hostnameOverride: ""
iptables:
  masqueradeAll: false
  masqueradeBit: 14
  minSyncPeriod: 0s
  syncPeriod: 30s
ipvs:
  strictARP: true
  masqueradeAll: true
  minSyncPeriod: 5s
  scheduler: "rr"
  syncPeriod: 30s
kind: KubeProxyConfiguration
metricsBindAddress: 127.0.0.1:10249
mode: "ipvs"
nodePortAddresses: null
oomScoreAdj: -999
portRange: ""
udpIdleTimeout: 250ms
EOF

systemctl restart kube-proxy
systemctl status kube-proxy

部署metallb

代码语言:shell
AI代码解释
复制
# 下载应用包
wget https://mirrors.chenby.cn/https://github.com/metallb/metallb/archive/refs/tags/v0.14.5.tar.gz
tar -zxvf v0.14.5.tar.gz
cd metallb-0.14.5/config/manifests

# 修改镜像地址
sed -i "s#quay.io#quay.chenby.cn#g" metallb-native.yaml 
cat metallb-native.yaml | grep image
        image: quay.chenby.cn/metallb/controller:v0.14.5
        image: quay.chenby.cn/metallb/speaker:v0.14.5
        
# 执行部署
kubectl apply -f metallb-native.yaml


root@k8s-master01:~# kubectl -n metallb-system get all 
NAME                              READY   STATUS    RESTARTS   AGE
pod/controller-6975f6bf7b-nm2d6   1/1     Running   0          23m
pod/speaker-4jtb4                 1/1     Running   0          23m
pod/speaker-fpd6q                 1/1     Running   0          23m
pod/speaker-mmfxq                 1/1     Running   0          23m
pod/speaker-rxs2b                 1/1     Running   0          23m
pod/speaker-sfxvb                 1/1     Running   0          23m

NAME                              TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
service/metallb-webhook-service   ClusterIP   10.96.95.84   <none>        443/TCP   23m

NAME                     DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
daemonset.apps/speaker   5         5         5       5            5           kubernetes.io/os=linux   23m

NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/controller   1/1     1            1           23m

NAME                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/controller-6975f6bf7b   1         1         1       23m
root@k8s-master01:~# 

创建池

代码语言:shell
AI代码解释
复制
# 新版本metallb使用了CR(Custom Resources),这里我们通过IPAddressPool的CR,进行地址池的定义。
# 如果实例中不设置IPAddressPool选择器L2Advertisement;那么L2Advertisement默认为该实例所有的IPAddressPool相关联。

cat > metallb-config-ipaddresspool.yaml << EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
  - 192.168.1.70-192.168.1.79
EOF

# 进行L2关联地址池的绑定。

cat > metallb-config-L2Advertisement.yaml << EOF
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: example
  namespace: metallb-system
spec:
  ipAddressPools:
  - first-pool
EOF

# 执行部署
kubectl apply -f metallb-config-ipaddresspool.yaml
kubectl apply -f metallb-config-L2Advertisement.yaml

测试

代码语言:shell
AI代码解释
复制
# 测试
cat > metallb-nginx.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: default
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1
        ports:
        - name: http
          containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
EOF

# 执行部署
kubectl apply -f metallb-nginx.yaml

查看

代码语言:shell
AI代码解释
复制
# 查看
# EXTERNAL-IP已经获取到IP地址
root@k8s-master01:~# kubectl get all
NAME                                READY   STATUS    RESTARTS      AGE
pod/nginx-648c475cfb-5pvvv          1/1     Running   0             4m24s

NAME                   TYPE           CLUSTER-IP        EXTERNAL-IP    PORT(S)        AGE
service/nginx          LoadBalancer   10.96.197.147     192.168.1.51   80:30752/TCP   4m24s

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx          1/1     1            1           4m24s

NAME                                      DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-648c475cfb          1         1         1       4m24s
root@k8s-master01:~# 

访问

代码语言:shell
AI代码解释
复制
# 访问
root@k8s-master01:~# curl 192.168.1.51
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
root@k8s-master01:~# 

关于

https://www.oiox.cn/

https://www.oiox.cn/index.php/start-page.html

CSDN、GitHub、51CTO、知乎、开源中国、思否、博客园、掘金、简书、华为云、阿里云、腾讯云、哔哩哔哩、今日头条、新浪微博、个人博客

全网可搜《小陈运维

文章主要发布于微信公众号

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
一文读懂 Transformer 神经网络模型
自从最新的大型语言模型(LLaM)的发布,例如 OpenAI 的 GPT 系列、开源模型 Bloom 以及谷歌发布的 LaMDA 等,Transformer 模型已经展现出了其巨大的潜力,并成为深度学习领域的前沿架构楷模。
Luga Lee
2023/09/22
42.6K1
一文读懂 Transformer 神经网络模型
ChatGPT 与世界:对话式 AI 模型对比
来源:InfoQ AI前线 本文约1000字,建议阅读5分钟 本文简单介绍了 ChatGPT 的竞争对手中最突出的几个模型。   作为一种人工智能语言模型,ChatGPT 已经成为自然语言处理领域最流行、最有效的工具之一。不过,值得注意的是,ChatGPT 并不是唯一一个 AI 语言模型。这几年,还出现了许多其他的模型,每个竞争对手都提供了独到的功能和优点。本文简单介绍了 ChatGPT 的竞争对手中最突出的几个模型。 本文最初发布于 Analytics Vidhya。 简介 作为一种人工智能语言模型,C
数据派THU
2023/05/11
2970
ChatGPT 与世界:对话式 AI 模型对比
LLM大语言模型原理、发展历程、训练方法、应用场景和未来趋势
LLM,全称Large Language Model,即大型语言模型。LLM是一种强大的人工智能算法,它通过训练大量文本数据,学习语言的语法、语义和上下文信息,从而能够对自然语言文本进行建模。这种模型在自然语言处理(NLP)领域具有广泛的应用,包括文本生成、文本分类、机器翻译、情感分析等。本文将详细介绍LLM大语言模型的原理、发展历程、训练方法、应用场景和未来趋势。
正在走向自律
2024/12/18
1.8K0
LLM大语言模型原理、发展历程、训练方法、应用场景和未来趋势
深入LLM与RAG 原理、实现与应用
大模型LLM(Large Language Model)是指具有大规模参数和复杂计算结构的机器学习模型。这些模型通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数。大模型的设计目的是为了提高模型的表达能力和预测性能,能够处理更加复杂的任务和数据。大模型在各种领域都有广泛的应用,包括自然语言处理、计算机视觉、语音识别和推荐系统等。大模型通过训练海量数据来学习复杂的模式和特征,具有更强大的泛化能力,可以对未见过的数据做出准确的预测。
奔跑企鹅907340320
2024/09/20
1630
2023年!自然语言处理(NLP)10 大预训练模型
语言模型是构建NLP应用程序的关键。现在人们普遍相信基于预训练模型来构建NLP语言模型是切实有效的方法。随着疫情阴霾的散去,相信NLP技术会继续渗透到众多行业中。在此过程中,肯定有很多同学会用到或者学习NLP预训练模型,为此作者整理了目前2023年NLP的十大预训练模型及论文,模型效果不分先后。
ShuYini
2023/03/06
6.8K1
2023年!自然语言处理(NLP)10 大预训练模型
LangServe如何革新LLM应用部署?
随LLM技术演进,AI应用开发部署越来越复杂。LangServe应运而生,旨在简化AI服务部署和运维的框架。专为LLM部署和管理而设计;本文旨在讲解LangServe的功能特点和实践运用。
科技新语
2024/10/21
1650
LangServe如何革新LLM应用部署?
RAG 修炼手册|一文讲透 RAG 背后的技术
今天我们继续剖析 RAG,将为大家详细介绍 RAG 背后的例如 Embedding、Transformer、BERT、LLM 等技术的发展历程和基本原理,以及它们是如何应用的。
Zilliz RDS
2024/04/11
1.9K0
RAG 修炼手册|一文讲透 RAG 背后的技术
多模态大模型技术原理与实战学习笔记(1)
GPT ( Generative Pre-trained Transformer,生成式预训练Transformer )
顾翔
2024/09/10
1840
多模态大模型技术原理与实战学习笔记(1)
6种大模型微调技术
由于LLM参数量都是在亿级以上,少则数十亿,多则数千亿。当我们想在用特定领域的数据微调模型时,如果想要full-tuning所有模型参数,看着是不太实际,一来需要相当多的硬件设备(GPU),二来需要相当长的训练时间。
皮大大
2025/05/07
3460
Transformer 架构—Encoder-Decoder
最初的Transformer是基于广泛应用在机器翻译领域的Encoder-Decoder架构:
JOYCE_Leo16
2024/03/19
1.1K0
Transformer 架构—Encoder-Decoder
介绍大语言模型(LLM)
近年来,人工智能(AI)和自然语言处理(NLP)领域取得了显著的进展,其中大语言模型(Large Language Models,简称LLM)成为了引人注目的焦点。大语言模型是基于深度学习技术训练的,可以理解和生成自然语言文本的AI模型。本文将介绍大语言模型的基本概念、发展历程、应用领域以及未来的潜力。
IT蜗壳-Tango
2024/07/30
3540
原创 | 从ULMFiT、Transformer、BERT等经典模型看NLP 发展趋势
自然语言处理(Natural Language Process,简称NLP)是计算机科学、信息工程以及人工智能的子领域,专注于人机语言交互,探讨如何处理和运用自然语言。自然语言处理的研究,最早可以说开始于图灵测试,经历了以规则为基础的研究方法,流行于现在基于统计学的模型和方法,从早期的传统机器学习方法,基于高维稀疏特征的训练方式,到现在主流的深度学习方法,使用基于神经网络的低维稠密向量特征训练模型。
数据派THU
2020/11/03
1.1K0
原创 | 从ULMFiT、Transformer、BERT等经典模型看NLP 发展趋势
LLM基础知识
💥通常,大语言模型 (LLM) 是指包含数千亿 (或更多) 参数的语言模型(目前定义参数量超过10B的模型为大语言模型),这些参数是在大量文本数据上训练的,例如模型 GPT-3、ChatGPT、PaLM、BLOOM和 LLaMA等.
@小森
2024/06/04
3760
LLM基础知识
【LLM系列之GPT】GPT(Generative Pre-trained Transformer)生成式预训练模型
GPT(Generative Pre-trained Transformer)是由OpenAI公司开发的一系列自然语言处理模型,采用多层Transformer结构来预测下一个单词的概率分布,通过在大型文本语料库中学习到的语言模式来生成自然语言文本。GPT系列模型主要包括以下版本:
致Great
2023/08/25
1.5K0
【LLM系列之GPT】GPT(Generative Pre-trained Transformer)生成式预训练模型
广告行业中那些趣事系列20:GPT、GPT-2到GPT-3,你想要的这里都有
摘要:本文是广告系列第二十篇,主要介绍了GPT系列模型的发展流程。首先介绍了NLP中超强但不秀的GPT模型。GPT属于典型的预训练+微调的两阶段模型,将Transformer作为特征抽取器,使用单向语言模型,属于NLP中非常重要的工作,同时还介绍了GPT模型下游如何改造成不同的NLP任务;然后介绍了有点火的GPT-2。相比于GPT来说GPT-2使用了更多更好的训练数据,同时直接使用无监督的方式来完成下游任务;最后介绍了巨无霸GPT-3。相比于GPT-2,GPT-3直接把模型的规模做到极致,使用了45TB的训练数据,拥有175B的参数量,真正诠释了暴力出奇迹。GPT-3模型直接不需要微调了,不使用样本或者仅使用极少量的样本就可以完成下游NLP任务,尤其在很多数据集中模型的效果直接超越了最好效果的微调模型,真正帮助我们解决了下游任务需要标注语料的问题。对GPT系列模型感兴趣的小伙伴可以一起沟通交流。
guichen1013
2021/01/21
8350
一文了解预训练语言模型!
现有的神经网络在进行训练时,一般基于后向传播(Back Propagation,BP)算法,先对网络中的参数进行随机初始化,再利用随机梯度下降(Stochastic Gradient Descent,SGD)等优化算法不断优化模型参数。
guichen1013
2022/09/22
1K0
一文了解预训练语言模型!
BERT模型为什么这么强?
👆点击“博文视点Broadview”,获取更多书讯 如果你是一名自然语言处理从业者,那你一定听说过大名鼎鼎的 BERT 模型。 BERT(Bidirectional Encoder Representations From Transformers)模型的“荣耀时刻”是2018年:称霸机器理解测试SQuAD,横扫其他10项NLP测试,达成“全面超过人类”成就。 BERT模型使用预训练和微调的方式来完成自然语言处理(Natural Language Processing,NLP)任务。这些任务包括问答系统
博文视点Broadview
2023/05/06
3260
BERT模型为什么这么强?
自然语言处理五年技术革新,快速梳理 NLP 发展脉络
机器之心发布 机器之心编辑部 机器之心《2020-2021 全球 AI 技术趋势发展报告》节选:顶会趋势(NeurIPS)分析。 2021 年伊始,机器之心发布《2020-2021 全球 AI 技术趋势发展报告》,基于顶会、论文及专利等公共数据、机器之心专业领域数据仓库,通过数据挖掘定位七大趋势性 AI 技术领域。 此外,该报告还邀请了近 100 位专家学者通过问卷调查,形成对这七大技术领域近年发展情况、成熟度与未来趋势的综合总结,并基于 2015-2020 年间的开源论文与专利语料,结合机器之心自有的新闻
机器之心
2023/03/29
1.2K0
自然语言处理五年技术革新,快速梳理 NLP 发展脉络
人工智能的发展历程和当前状态,全面认识大语言模型的发展之路
截至 2023 年 11 月,人类创造的人工智能工具已经取得了长足的进步,在自然语言处理、机器翻译、问答系统等领域取得了显著成果。当前走到了大语言模型阶段。
LIYI
2023/12/04
3.1K0
人工智能的发展历程和当前状态,全面认识大语言模型的发展之路
LLM主要类别架构
💫LLM分类一般分为三种:自编码模型(encoder)、自回归模型(decoder)和序列到序列模型(encoder-decoder)。
@小森
2024/06/04
5460
推荐阅读
相关推荐
一文读懂 Transformer 神经网络模型
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档