gpt4 book ai didi

docker - RabbitMQ、.NET Core 和 Kubernetes(配置)

转载 作者:行者123 更新时间:2023-12-05 06:27:09 25 4
gpt4 key购买 nike

我正在尝试在 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。

apiVersion: v1kind: Servicemetadata:  name: rabbitmqmanagement-loadbalancerspec:  type: LoadBalancer  selector:    app: rabbitmq  ports:  - port: 80    targetPort: 15672

我哪里错了?

最佳答案

我假设您正在 Kubernetes 集群外运行 .NET Core 应用。如果确实如此,那么您需要使用 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 安装。

关于docker - RabbitMQ、.NET Core 和 Kubernetes(配置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55513966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com