开启ipvs并开启严格ARP模式
参考https://metallb.io/installation/
| kubectl edit configmap -n kube-system kube-proxy |
源
| mode: "" |
| ipvs: |
| strictARP: false |
改成
| mode: "ipvs" |
| ipvs: |
| strictARP: true |
下载
| wget https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml |
部署
| kubectl apply -f metallb-native.yaml |
| helm repo add metallb https://metallb.github.io/metallb |
| helm repo update |
| |
| helm search repo metallb/metallb -l |
| |
| kubectl create ns metallb-ns |
| helm install metallb metallb/metallb |
这个命令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 . |
| kubectl get all -n metallb-ns |
创建一个IPAddressPool地址池,用来指定用于分配的IP池;再创建了一个二层通告,去关联这个地址池将其中的IP地址们通告出去
ip-pool.yaml
| apiVersion: metallb.io/v1beta1 |
| kind: IPAddressPool |
| metadata: |
| name: production-public-ips |
| namespace: metallb-ns |
| spec: |
| addresses: |
| - 192.168.10.0/24 |
| |
| --- |
| apiVersion: metallb.io/v1beta1 |
| kind: L2Advertisement |
| metadata: |
| name: production-adver |
| namespace: metallb-ns |
| spec: |
| ipAddressPools: |
| - production-public-ips |
| kubectl apply -f ip-pool.yaml |
部署一个nginx
nginx-deployment.yaml
| kind: Deployment |
| apiVersion: apps/v1 |
| metadata: |
| name: nginx |
| labels: |
| app: nginx |
| spec: |
| replicas: 1 |
| selector: |
| matchLabels: |
| app: nginx |
| template: |
| metadata: |
| labels: |
| app: nginx |
| spec: |
| containers: |
| - name: nginx |
| image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.1 |
| ports: |
| - name: web |
| containerPort: 80 |
| kubectl apply -f nginx-deployment.yaml |
nginx-service.yaml
| apiVersion: v1 |
| kind: Service |
| metadata: |
| name: nginx |
| annotations: |
| metallb.universe.tf/address-pool: production-public-ips |
| spec: |
| ports: |
| - port: 80 |
| targetPort: 80 |
| selector: |
| app: nginx |
| type: LoadBalancer |
| kubectl apply -f nginx-service.yaml |
查看分配的ip
结果
| 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
原生方式
| 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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2020-10-27 撬动offer:两个长字符串数字相加
2019-10-27 8、服务发现&服务消费者Feign