Kubernetes负载平衡器外部IP待处理

时间:2020-02-18 17:37:08

标签: docker kubernetes docker-compose rabbitmq kubernetes-pod

我在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

2 个答案:

答案 0 :(得分:2)

服务类型Loadbalancer仅在支持外部负载平衡器的云提供商上起作用。将type字段设置为LoadBalancer会为您的服务配置负载平衡器。由于您所处的环境不支持服务。在非云环境中,更简单的选择是使用nodeport类型的服务。这是guide,介绍如何使用Nodeport从群集外部访问服务。

答案 1 :(得分:2)

LoadBalancer服务不适用于裸机群集。您的LoadBalancer服务也将充当NodePort服务。您可以使用nodeIP:nodePort组合从群集外部访问服务。

如果您确实希望具有自定义端口组合的外部IP访问您的服务,请查看metallb,它在裸机群集上实现了对LoadBalancer类型服务的支持。