I run in kubernetes:
- a pod with an nginx server, that serves an HTML page
- a service of type
ClusterIP
A JavaScript fetch in the HTML gives me net::ERR_NAME_NOT_RESOLVED
<script>
fetch("http://backend-service.default.svc.cluster.local")) // net::ERR_NAME_NOT_RESOLVED
</script>
However, the URL can be resolved when I use curl on the image:
$ kubectl exec frontend-deployment-75f7d9775b-pxgkx -- curl http://backend-service.default.svc.cluster.local
<expected json response>
Why can the URL be resolved with curl, but JavaScript fetch fails with net::ERR_NAME_NOT_RESOLVED?
I figured it out!
In the scenario I described:
fetchruns in my browser, hence tries to fetch from the public internet.curlruns in the container on the pod, hence fetches from the cluster.