我有一个客户端应用程序g在kubernetes 1.11.1上的Pod中运行,应该连接到RabbitMQ集群。
我想创建一个服务,该服务应在两个主机的两个IP地址之间进行循环。主机不是容器,它们是充当RabbitMQ群集的外部虚拟机。
我创建了一个服务和一个共享名称(rabbitmq-service)的端点以进行匹配。现在,无法通过Pod通过DNS解析servicename.default.svc,而可以通过包含服务名称的名称来解析两个主机名,例如:NNNN.servicename.namespace.svc.clusterdomain 。 (其中N-N-N-N类似于IP地址)。
service.yaml:
apiVersion: v1
kind: Service
metadata:
name: rabbitmq-service
spec:
ports:
- name: http
protocol: TCP
port: 5672
targetPort: 5672
endpoints.yaml:
apiVersion: v1
kind: Endpoints
metadata:
name: rabbitmq-service
namespace: default
subsets:
- addresses:
- ip: 10.112.63.98
- ip: 10.112.63.99
ports:
- name: http
port: 5672
protocol: TCP
如何配置servicename.default.svc分辨率?
谢谢。
答案 0 :(得分:0)
我应用了您的配置,这就是我得到的:
username_tst
我还尝试使用以下命令从另一个Pod解析Rabbitmq-service的dns:
kubectl get endpoints
NAME ENDPOINTS AGE
kubernetes 192.168.99.116:8443 45s
rabbitmq-service 10.112.63.98:5672,10.112.63.99:5672 13s
吊舱中的上述kubectl apply -f https://k8s.io/examples/admin/dns/busybox.yaml
kubectl exec -ti busybox -- nslookup rabbitmq-service.default
命令给出了输出:
nslookup
表示该服务是可解析的。我希望从运行kubernetes集群的计算机访问Rabbitmq服务应该有问题。
如果您怀疑kubernetes coreDNS有问题,请参阅this文档。