k8s部署metallb实现service的LoadBalancer模式

news/2024/10/26 11:07:22/

开启ipvs并开启严格ARP模式

参考https://metallb.io/installation/

kubectl edit configmap -n kube-system kube-proxy

mode: ""
ipvs:strictARP: false

改成

    mode: "ipvs"ipvs:strictARP: true

k8s原生部署metallb

下载

wget https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml

部署

kubectl apply -f metallb-native.yaml 

helm方式部署metallb

helm repo add metallb https://metallb.github.io/metallb
helm repo updatehelm search repo metallb/metallb -lkubectl create ns metallb-ns
helm install metallb metallb/metallb --namespace=metallb-ns --version 0.14.8

这个命令helm install metallb metallb/metallb --namespace=metallb-ns --version 0.14.8可能下载metallb失败;可以通过其他方式下载后再安装

wget https://github.com/metallb/metallb/releases/download/metallb-chart-0.14.8/metallb-0.14.8.tgz
tar -zxvf metallb-0.14.8.tgz
cd metallb/
kubectl create ns metallb-ns
helm install metallb . --namespace=metallb-ns
kubectl get all -n metallb-ns 

使用metallb

创建一个IPAddressPool地址池,用来指定用于分配的IP池;再创建了一个二层通告,去关联这个地址池将其中的IP地址们通告出去

ip-pool.yaml

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:name: production-public-ipsnamespace: metallb-ns
spec:addresses:- 192.168.10.0/24---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:name: production-advernamespace: metallb-ns
spec:ipAddressPools:- production-public-ips
kubectl apply -f ip-pool.yaml

部署一个nginx

nginx-deployment.yaml

kind: Deployment
apiVersion: apps/v1
metadata:name: nginxlabels:app: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.1ports:- name: webcontainerPort: 80
kubectl apply -f nginx-deployment.yaml

nginx-service.yaml

apiVersion: v1
kind: Service
metadata:name: nginxannotations:metallb.universe.tf/address-pool: production-public-ips #添加注解,指定地址池
spec:ports:- port: 80targetPort: 80selector:app: nginxtype: LoadBalancer  #需要指定为LoadBalancer类型
kubectl apply -f nginx-service.yaml

查看分配的ip

kubectl get svc

结果

NAME         TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1       <none>         443/TCP        76d
nginx        LoadBalancer   10.102.47.232   192.168.10.0   80:32195/TCP   41s

向nginx容器里的静态目录写入内容

kubectl exec -it nginx-7ccbfc6ff8-x9dx6 -- /bin/sh -c "echo i like metallb > /usr/share/nginx/html/metallb.html"

访问http://192.168.10.0/metallb.html

卸载metallb

原生方式

kubectl delete -f metallb-native.yaml 

helm方式

helm uninstall metallb --namespace=metallb-ns

参考

https://metallb.io/installation/
https://blog.csdn.net/weixin_64334766/article/details/134818813
https://www.cnblogs.com/bmwhero/p/17950012

http://www.ppmy.cn/news/1542100.html

相关文章

青少年编程与数学 02-002 Sql Server 数据库应用 09课题、规则、约束和默认值

青少年编程与数学 02-002 Sql Server 数据库应用 09课题、规则、约束和默认值 课题摘要:一、规则二、规则应用示例三、约束四、约束应用示例五、默认值六、关系&#xff08;Relationship&#xff09;七、一致性、完整性和可维护性 本课题介绍了SQL Server中规则、约束和默认值的…

UE5里的TObjectPtr TSharedPtr TWeakPtr有什么区别

在 Unreal Engine&#xff08;UE&#xff09;编程中&#xff0c;TObjectPtr、TSharedPtr 和 TWeakPtr 都是 指针类型&#xff0c;但它们在生命周期管理和使用场景上有不同的特点。让我们详细分析这些指针的区别和用途。 TObjectPtr TObjectPtr 是 UE5 中引入的新智能指针类型…

fpga系列 HDL: 竞争和冒险 01

卡诺图是一种逻辑化简工具&#xff0c;用来在布尔函数的最小项和形式中&#xff0c;找到冗余项并实现逻辑化简。也可用于HDL中竞争和冒险的判断。 最小项 任何一个逻辑函数都能化简为最小项的和的形式对于 n 个变量的布尔表达式&#xff0c;每个变量都必须以原变量&#xff0…

美​团​一​面​-​3​​宁​德​时​代​一​面

美团&#xff1a; 1. 请尽可能详细地说明&#xff0c;小程序相对于H5的优势&#xff0c;可以结合开发人员的开发过程感受和用户体验等方面详细展开叙述。你的回答中不要写出示例代码。 小程序相对于H5的优势可以从多个角度进行详细分析&#xff0c;包括开发人员的开发过程感受…

微信小程序中关闭默认的 `navigationBar`,并使用自定义的 `nav-bar` 组件

要在微信小程序中关闭默认的 navigationBar&#xff0c;并使用自定义的 nav-bar 组件&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 关闭默认的 navigationBar 在你的页面的配置文件 *.json 中设置 navigationBar 为 false。你需要在页面的 JSON 配置文件中添加以下代码…

SpringBoot面试热题

1.Spring IOC(控制反转)和AOP(面相切面编程)的理解 控制反转意味着将对象的控制权从代码中转移到Spring IOC容器。 本来是我们自己手动new出来的对象&#xff0c;现在则把对象交给Spring的IOC容器管理&#xff0c;IOC容器作为一个对象工厂&#xff0c;管理对象的创建和依赖关系…

论文笔记:LaDe: The First Comprehensive Last-mile Delivery Dataset from Industry

2023 KDD 1 intro 1.1 背景 随着城市化进程的加快和电子商务的发展&#xff0c;最后一公里配送已成为一个关键的研究领域 最后一公里配送&#xff0c;如图1所示&#xff0c;是指连接配送中心和客户的包裹运输过程&#xff0c;包括包裹的取件和配送除了对客户满意度至关重要外…

Centos7 安装 Openssl 和 Nginx

1. Openssl 回退低版本安装openssl-1.0.0h openssl 默认安装版本&#xff1a;openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 所有版本的openssl yum install gcctar -zxvf openssl-1.0.0h.tar.gz./config --prefix/usr/local/ssl# 错误处理wget https://www.cpan.org/s…