我已经在GKE中设置了一个K8S集群,并安装了RabbitMQ(来自市场)和Istio(通过Helm)。我可以从Pod访问rabbitMQ,直到我将特使代理注入这些Pod中为止,但是之后流量将不会到达RabbitMQ,并且我不知道如何启用对Rabbitmq服务的流量。
有一个服务 rabbitmq-rabbitmq-svc (在 rabbitmq 名称空间中),类型为LoadBalancer。 当我没有运行特使时,我尝试了一个简单的busybox,然后可以很容易地telnet到rabbitmq(端口5672),但是当我尝试使用自动特使注入特使时,流量就会阻止。 我尝试添加DestinationRule失败。 (我添加了一条规则,但没关系)
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: rabbitmq-rabbitmq-svc
spec:
host: rabbitmq.rabbitmq.svc.cluster.local
trafficPolicy:
loadBalancer:
simple: LEAST_CONN
似乎应该是一个简单的解决方案,但我无法弄清楚...:/
更新 原来这是主机名中的一个简单错误,最终使用了它,并且可以正常工作:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: rabbitmq-rabbitmq-svc
spec:
host: rabbitmq-rabbitmq-svc.rabbitmq.svc.cluster.local
答案 0 :(得分:1)
原来是主机名中的一个简单错误,正确的是rabbitmq-rabbitmq-svc.rabbitmq.svc.cluster.local
答案 1 :(得分:1)
为了让 RabbitMQ 集群在 Istio 中工作,我唯一需要做的就是对 RabbitMQ pod 进行注释:
FILE
由于某种原因,排除端口注释不起作用,所以我只是通过使用包含端口注释来翻转它。就我而言,全局 Istio 配置由公司中的另一个团队控制,因此在尝试使用排除端口注释时可能会发生冲突。
答案 2 :(得分:0)
我也许以前也遇到过同样的问题。但是我的应用程序可以在Rabbitmq服务中使用4369端口声明epmd后,通过特使连接Rabbitmq。
apiVersion: v1
kind: Service
metadata:
name: rabbitmq
labels:
app: rabbitmq
spec:
type: ClusterIP
ports:
- port: 5672
targetPort: 5672
name: message
- port: 4369
targetPort: 4369
name: epmd
- port: 15672
targetPort: 15672
name: management
selector:
app: rabbitmq