2

我有一个在 minikube(启用插件)中运行的 nginx 入口,带有几个 pod 和服务,入口具有以下配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx
spec:
  rules:
  - host: api.info
    http:
      paths:
      - backend:
          serviceName: api-service
          servicePort: 80
  - host: web.info
    http:
      paths:
      - backend:
          serviceName: web-service
          servicePort: 80

当我在集群之外时,以下工作正常:

curl --header 'Host: api.info' $(minikube ip)/health

但是,当我在集群中时,我希望容器能够使用我的 Ingress 模板中列出的主机名相互通信。例如,我希望以下内容可以工作,但事实并非如此:

$ kubectl exec -it web-6c656c58d5-lpxsk /bin/bash
root@web-6c656c58d5-lpxsk:/web# curl api.info/health

相反,它从我没有隶属关系的实际 api.info 网站返回结果。首先,有人可以确认这是否可行吗?

谢谢你。

4

1 回答 1

0

首先,.info是一个通用的 TLD,这使得 DNS 解析变得混乱。
考虑使用受保护的顶级域名或您自己注册的顶级域名,例如api.example.com

您应该/etc/hosts使用类似于以下内容的行进行编辑:
<ip_address> api.info

或更改resolv.conf以优先考虑您的内部 DNS。

于 2018-03-06T21:53:31.507 回答