错误:getaddrinfo ENOTFOUND ingress-nginx.ingress-nginx-controller.svc.cluster.local [英] Error: getaddrinfo ENOTFOUND ingress-nginx.ingress-nginx-controller.svc.cluster.local

查看:41
本文介绍了错误:getaddrinfo ENOTFOUND ingress-nginx.ingress-nginx-controller.svc.cluster.local的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 NextJS,我需要它知道它何时在服务器或浏览器上发出请求.要在服务器端执行此操作,因为我在微服务架构中构建它,我需要获取服务的服务名称和命名空间以完成 url,如 http://SERVICENAME.NAMESPACE.svc.cluster.local.

I am working with NextJS and I need for it to know when it's making a request on the server or on the browser. To do it on the server-side because I am building this inside a microservices architecture, I need to obtain the service name and namespace of the service to complete the url like so http://SERVICENAME.NAMESPACE.svc.cluster.local.

所以在我的终端中,我打印出了所有不同的命名空间,如下所示:

So in my terminal I printed out all my different namespaces like so:

$kubectl get namespace

NAME              STATUS   AGE
default           Active   9d
ingress-nginx     Active   9d
kube-node-lease   Active   9d
kube-public       Active   9d
kube-system       Active   9d

所以 ingress-nginx 就是我要找的.然后我跑了:

So ingress-nginx is what I am looking for. Then I ran:

$kubectl get services -n ingress-nginx

NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             LoadBalancer   10.100.129.149   localhost     80:30463/TCP,443:31399/TCP   9d
ingress-nginx-controller-admission   ClusterIP      10.111.40.184    <none>        443/TCP                      9d

所以据我了解 ingress-nginx-controller 是我的服务的名称.

So to my understanding ingress-nginx-controller is the name of my service.

所以我向 http://ingress-nginx.ingress-nginx-controller.svc.cluster.local/api/users/currentuser 发出请求,但我还必须指定一个主机是这样的:

So I am making the request to http://ingress-nginx.ingress-nginx-controller.svc.cluster.local/api/users/currentuser, but I also had to specify a host like so:

LandingPage.getInitialProps = async () => {
  if (typeof window === "undefined") {
    const { data } = await axios.get(
      "http://ingress-nginx.ingress-nginx-controller.svc.cluster.local/api/users/currentuser",
      {
        headers: {
          Host: "ticketing.dev",
        },
      }
    );

    return data;
  } else {
    const { data } = await axios.get("/api/users/currentuser");

    return data;
  }
};

但是当我提出请求时,我仍然在浏览器上打印出来:

but when I make the request I am still getting this printing out on the browser:

我拉出了 kubectl 日志,一切都是 200:

I pulled kubectl logs and everything is 200:

192.168.65.3 - - [06/Nov/2020:01:30:15 +0000] "GET /_next/static/chunks/pages/_app.js?ts=1604626215582 HTTP/2.0" 200 600778 "https://ticketing.dev/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36" 51 0.131 [default-client-srv-3000] [] 10.1.0.244:3000 601240 0.132 200 406761022b9aad1a8cd45b9574f3082c
192.168.65.3 - - [06/Nov/2020:01:30:15 +0000] "GET /_next/static/chunks/main.js?ts=1604626215582 HTTP/2.0" 200 1141017 "https://ticketing.dev/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36" 46 0.259 [default-client-srv-3000] [] 10.1.0.244:3000 1141886 0.258 200 da2d882e400bebe57a8ce403acd55c8b
192.168.65.3 - - [06/Nov/2020:01:30:16 +0000] "GET /_next/static/chunks/0.js HTTP/2.0" 200 1578 "https://ticketing.dev/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36" 32 0.003 [default-client-srv-3000] [] 10.1.0.244:3000 1595 0.003 200 264ab274cf006691d92b1f03f05ffbca
192.168.65.3 - - [06/Nov/2020:01:30:27 +0000] "GET /_next/webpack-hmr?page=/ HTTP/2.0" 200 1499 "https://ticketing.dev/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36" 34 11.495 [default-client-srv-3000] [] 10.1.0.244:3000 1543 11.495 200 99420f1d80b74b84c0cb42ead9981d43

我错过了什么?我认为问题不在 ingress-srv.yml 文件中:

What am I missing? I don't think the issue is in the ingress-srv.yml file:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: ticketing.dev
      http:
        paths:
          - path: /api/users/?(.*)
            backend:
              serviceName: auth-srv
              servicePort: 3000
          - path: /?(.*)
            backend:
              serviceName: client-srv
              servicePort: 3000

推荐答案

基于访问服务的URL:

Base on URL of accessing the service:

http://SERVICENAME.NAMESPACE.svc.cluster.local 

应该是这样的

http://ingress-nginx-controller.ingress-nginx.svc.cluster.local

这篇关于错误:getaddrinfo ENOTFOUND ingress-nginx.ingress-nginx-controller.svc.cluster.local的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆