k8sMetalLB部署无云平台的LoadBalancer云服务
Posted dezasseis
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8sMetalLB部署无云平台的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-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 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: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: myapp:v1
查看分配到的IP地址:
内部测试:
外网测试:实现了负载均衡
以上是关于k8sMetalLB部署无云平台的LoadBalancer云服务的主要内容,如果未能解决你的问题,请参考以下文章