我在Kubernetes中创建RabbitMQ集群。我正在尝试添加负载均衡器。但是我无法获得负载均衡器External-IP,它仍在等待处理。
apiVersion: v1
kind: Service
metadata:
name: rabbitmq
labels:
run: rabbitmq
spec:
type: NodePort
ports:
- port: 5672
protocol: TCP
name: mqtt
- port: 15672
protocol: TCP
name: ui
selector:
run: rabbitmq
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: rabbitmq
spec:
replicas: 1
selector:
matchLabels:
run: rabbitmq
template:
metadata:
labels:
run: rabbitmq
spec:
containers:
- name: rabbitmq
image: rabbitmq:latest
imagePullPolicy: Always
我的负载均衡器在下面。我给了负载均衡器nodePort是随机的,端口号来自kubernetes创建的RabbitMQ mqtt端口号,目标端口号来自kubernetes创建的RabbitMQ UI端口号
apiVersion: v1
kind: Service
metadata:
name: loadbalanceservice
labels:
app: rabbitmq
spec:
selector:
app: rabbitmq
type: LoadBalancer
ports:
- nodePort: 31022
port: 30601
targetPort: 31533
服务类型Loadbalancer仅在支持外部负载平衡器的云提供程序上起作用。将类型字段设置为LoadBalancer会为您的服务配置负载平衡器。由于您所在的环境不支持负载平衡器类型的服务,该请求正在等待处理。在非云环境中,一个更简单的选择是使用nodeport类型的服务。这是使用Nodeport从群集外部访问服务的guide。
LoadBalancer服务在裸机群集上不起作用。您的LoadBalancer服务也将充当NodePort服务。您可以使用nodeIP:nodePort
组合从群集外部访问服务。
如果您确实希望具有自定义端口组合的外部IP访问您的服务,请查看metallb,它在裸机群集上实现了对LoadBalancer类型服务的支持。