使pod通过DNS解析外部服务名称

时间:2019-07-03 15:25:49

标签: kubernetes rabbitmq coredns

我有一个客户端应用程序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分辨率?

谢谢。

1 个答案:

答案 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文档。