【问题标题】:RabbitMQ, .NET Core and Kubernetes (configuration)RabbitMQ、.NET Core 和 Kubernetes(配置)
【发布时间】:2019-08-26 02:13:54
【问题描述】:

我正在尝试在 Kubernetes 中设置一些微服务。一切都按预期工作,除了从一个微服务到 RabbitMQ 的连接。

问题流程:

  • .NET Core 应用 --> rabbitmq-kubernetes-service.yml --> RabbitMQ


在 .NET Core 应用程序中,rabbit 连接工厂配置如下所示:

"RabbitMQ": {
    "Host": "rabbitmq-service",
    "Port": 7000,
    "UserName": "guest",
    "Password": "guest"
}

kubernetes rabbit 服务如下所示:

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq-service
spec:
  selector:
    app: rabbitmq
  ports:
    - port: 7000
      targetPort: 5672

以及兔子部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq
  labels:
    app: rabbitmq
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rabbitmq
  template:
    metadata:
      labels:
        app: rabbitmq
    spec:
      containers:
        - name: rabbitmq
          image: <private ACR with vanilla cfg - the image is: rabbitmq:3.7.9-management-alpine>
          imagePullPolicy: Always        
          resources:
            limits:
              cpu: "1"
              memory: 512Mi
            requests:
              cpu: "0.5"
          ports:
            - containerPort: 5672

所以这个设置目前在 k8s 中工作。在本地,它就像一个带有基本 docker-compose 的魅力。

然而,我可以在 k8s 中做的是从 LoadBalancer --> 到正在运行的 rabbit pod 并使用这些配置设置访问管理 GUI。

api版本:v1 种类:服务 元数据: 名称:rabbitmqmanagement-loadbalancer 规格: 类型:负载均衡器 选择器: 应用程序:rabbitmq 端口: - 端口:80 目标端口:15672

我哪里错了?

【问题讨论】:

  • 您解决了这个问题吗?

标签: docker kubernetes .net-core rabbitmq


【解决方案1】:

我假设您在 Kubernetes 集群外运行 .NET Core app。 如果确实如此,那么您需要使用type: LoadBalancer

LoadBalancer 用于向互联网公开服务。

ClusterIP 在集群内部 IP 中公开服务。所以Service 只能从集群内部访问,这也是默认的ServiceType

NodePort 在每个节点的 IP 上的静态端口上公开服务。

有关服务的更多详细信息,请查看Kubernetes docs

如果连接使用 python 脚本工作,您可以:

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(
        pika.ConnectionParameters(host='RABBITMQ_SERVER_IP'))
channel = connection.channel()

channel.queue_declare(queue='hello')

channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()

此脚本将尝试使用端口5672 连接RABBITMQ_SERVER_IP

脚本需要一个库 pika,可以使用 pip install pika 安装。

【讨论】:

    猜你喜欢
    • 2019-11-12
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2023-03-28
    • 2022-07-29
    • 1970-01-01
    相关资源
    最近更新 更多