I have an nginx ingress running in minikube (addon enabled) with a couple pods and services, the ingress has the following configuration:
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
When I'm outside the cluster the following works fine:
curl --header 'Host: api.info' $(minikube ip)/health
But, when I'm inside the cluster, I would expect the containers to be able to talk to each other using their host names listed in my Ingress template. For example, I would expect the following to work, but it doesn't:
$ kubectl exec -it web-6c656c58d5-lpxsk /bin/bash
root@web-6c656c58d5-lpxsk:/web# curl api.info/health
Instead, it returns results from the actual api.info website, which I have no affiliation. First, can someone please confirm that this is suppose to work?
Thank you.
Firstly, .info
is a generic TLD, this makes DNS resolution messy.
Consider using a protected TLD or your own registered one eg api.example.com
You should edit your /etc/hosts
with a line similar to:
<ip_address> api.info
or changing resolv.conf
to prioritise your internal DNS.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.