我有一个在minikube上运行的nginx入口(启用了插件),带有几个pod和服务,ingress具有以下配置:
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网站返回结果,我没有任何关联。首先,有人可以确认这是假设有效吗?
谢谢。
答案 0 :(得分:0)
首先,.info
是通用顶级域名,这会使DNS解析变得混乱
考虑使用受保护的TLD或您自己注册的TLD,例如api.example.com
您应该使用类似于以下内容的行编辑/etc/hosts
<ip_address> api.info
或更改resolv.conf
以确定内部DNS的优先级。