【发布时间】:2019-07-31 03:11:23
【问题描述】:
kubectl describe service the-load-balancer 命令返回:
Name: the-load-balancer
Namespace: default
Labels: app=the-app
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"the-app"},"name":"the-load-balancer","namespac...
Selector: app=the-app
Type: LoadBalancer
IP: 10.100.129.251
LoadBalancer Ingress: 1234567-1234567890.us-west-2.elb.amazonaws.com
Port: the-load-balancer 15672/TCP
TargetPort: 15672/TCP
NodePort: the-load-balancer 30080/TCP
Endpoints: 172.31.77.44:15672
Session Affinity: None
External Traffic Policy: Cluster
在负载均衡器后面的另一个容器上运行的 RabbitMQ 服务器可以通过负载均衡器的Endpoints 172.31.77.44:15672 从另一个容器访问。
但它无法使用the-load-balancer 主机名或通过其本地10.100.129.251 IP 地址进行连接。
需要做什么才能通过负载均衡器的the-load-balancer 主机名访问RabbitMQ 服务?
稍后编辑:
从另一个容器运行一个简单的 Python 测试:
import socket
print(socket.gethostbyname('the-load-balancer'))
返回负载均衡器本地 IP 10.100.129.251。
使用 '172.31.18.32' 连接到 RabbitMQ 效果很好:
import pika
credentials = pika.PlainCredentials('guest', 'guest')
parameters = pika.ConnectionParameters(host='172.31.18.32', port=5672, credentials=credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
print('...channel: %s' % channel)
但是将host='172.31.18.32'替换为host='the-load-balancer'或host='10.100.129.251'后,客户端连接失败。
【问题讨论】:
标签: amazon-web-services kubernetes google-cloud-platform rabbitmq amazon-eks