本文主要是介绍【k8s】MetalLB部署无云平台的LoadBalancer云服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、简介
- 允许您在未在云提供商上运行的集群中创建类型为“ LoadBalancer”的Kubernetes服务
功能:
- 地址分配
- 外部通知
二、部署
01_前提
网络插件:Flannel
ipvs模式
kubectl edit configmap -n kube-system kube-proxy
mode: "ipvs"
ipvs:strictARP: true
kubectl get pod -n kube-system |grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
更新
02_部署
mkdir metalLB
创建目录
cd metalLB/
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/metallb.yaml
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
加密
03_配置
分配地址池
第2层模式不需要将IP绑定到工作节点的网络接口。它的工作原理是直接响应本地网络上的ARP请求,从而将计算机的MAC地址提供给客户端。
kubectl apply -f config.yml
apiVersion: v1
kind: ConfigMap
metadata:namespace: metallb-systemname: config
data:config: |address-pools:- name: defaultprotocol: layer2addresses:- 172.25.2.100-172.25.2.200
三、创建svc测试
nginx-svc 类型为 LoadBalancer
kubectl apply -f nginx-svc.yml
---
apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:name: deployment
spec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: myapp:v1
查看分配到的IP地址:
内部测试:
外网测试:实现了负载均衡
这篇关于【k8s】MetalLB部署无云平台的LoadBalancer云服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!