Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform Kubernetes入口控制器GPC GKE can';我无法到达现场_Google Cloud Platform_Google Kubernetes Engine_Kubernetes Ingress_Nginx Ingress_Gke Networking - Fatal编程技术网

Google cloud platform Kubernetes入口控制器GPC GKE can';我无法到达现场

Google cloud platform Kubernetes入口控制器GPC GKE can';我无法到达现场,google-cloud-platform,google-kubernetes-engine,kubernetes-ingress,nginx-ingress,gke-networking,Google Cloud Platform,Google Kubernetes Engine,Kubernetes Ingress,Nginx Ingress,Gke Networking,Kubernetes入口控制器无法到达站点 您好,这是我第一次尝试使用kubernetes部署应用程序。我面临的问题是,我希望能够用我的svc链接子域,但当我尝试导航到我得到的链接时 无法访问此网站 我将解释我为这些所做的步骤,可能我有什么不对劲或遗漏了 我在google云平台上安装了ingress controller 在GCP->网络服务->云DNS中 a。我用谷歌dns指向testcompany.com b。我从上一步“ingress nginx controller”创建了指向公共IP

Kubernetes入口控制器无法到达站点

您好,这是我第一次尝试使用kubernetes部署应用程序。我面临的问题是,我希望能够用我的svc链接子域,但当我尝试导航到我得到的链接时

无法访问此网站

我将解释我为这些所做的步骤,可能我有什么不对劲或遗漏了

  • 我在google云平台上安装了
    ingress controller

  • 在GCP->网络服务->云DNS中

    a。我用谷歌dns指向testcompany.com

    b。我从上一步“ingress nginx controller”创建了指向公共IP的A记录

  • 我的svc清单

    apiVersion: v1
    kind: Service
    metadata:
      namespace: staging
      name: testcompany-svc
      labels:
        app: testcompany-svc
    spec:
      type: NodePort
      ports:
        - name: test-http
          port: 80
          protocol: TCP
          targetPort: 3001
      selector:
        app: testcompany
    
  • 我的入境名单

    apiVersion: networking.k8s.io/v1beta1
    
      - host: api.testcompany.com
        http:
          paths:
          - backend:
              serviceName: testcompany-svc
              servicePort: test-http
    
  • 一切都是绿色的,似乎都在运行,但当我尝试访问url时,我得到了无法访问此站点的


    更新1

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      namespace: staging
      name: ingress
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
      rules:
      - host: front.stagingtestcompany.com
        http:
          paths:
          - backend:
              serviceName: testcompanyfront-svc
              servicePort: testcompanyfront-http
    
      - host: api.stagingtestcompanysrl.com
        http:
          paths:
          - backend:
              serviceName: testcompanynodeapi-svc
              servicePort: testcompanyapi-http
    

    您应该按以下顺序检查此项:

  • 您的服务、Pod和入口位于同一命名空间中:
    kubectl get all-n staging
  • 您的Pod正在端口3001上侦听:如果可以,请在本地运行,或者使用
    kubectl port forward pods/[Pod name]-n staging 3001:3001
    并在本地使用
    http://localhost:3001/...
  • 您的服务正确到达Pod:使用
    kubectl端口转发服务/testcompany svc-n staging 3001:3001
    并在本地使用
    http://localhost:3001/...
  • 在发布之前检查任何其他入口规范规则
  • 检查VPC网络中的防火墙规则,它们应该允许来自Google LBs的流量

  • 您应该按以下顺序检查此项:

  • 您的服务、Pod和入口位于同一命名空间中:
    kubectl get all-n staging
  • 您的Pod正在端口3001上侦听:如果可以,请在本地运行,或者使用
    kubectl port forward pods/[Pod name]-n staging 3001:3001
    并在本地使用
    http://localhost:3001/...
  • 您的服务正确到达Pod:使用
    kubectl端口转发服务/testcompany svc-n staging 3001:3001
    并在本地使用
    http://localhost:3001/...
  • 在发布之前检查任何其他入口规范规则
  • 检查VPC网络中的防火墙规则,它们应该允许来自Google LBs的流量

  • 您能在内部呼叫您的服务吗?您可以使用节点的内部ip地址和节点端口来检查它。另外,确保pod有一个容器监听TCP端口3001。最后一件事,你的节点端口范围是30000-32767还是你自己定制的?更多信息通过运行此命令,Kubectl get service-o yamldid您是否尝试直接访问公共IP而不是主机名?使用curl,您可以如下设置主机
    curl-H“host:api.testcompany.com”
    以避免DNS延迟或错误配置您安装了什么
    ingress controller
    ?你能提供链接吗?是
    ingress nginx
    还是
    kubernetes ingress
    ?您是否也可以共享您的整个
    入口
    清单,以便我们可以查看所有注释等+1.请回答上述问题。当您
    curl
    直接访问服务IP时,它是否正常工作?@Milad谢谢您的评论。来自nodeport的端口在默认范围之间。在本地,它正在工作,但我在本地没有域。谢谢你的评论,这很有用@guillaumeblaquiere感谢您的评论。如果我尝试访问ingress nginx控制器外部ip,我有404。您可以在内部调用您的服务吗?您可以使用节点的内部ip地址和节点端口来检查它。另外,确保pod有一个容器监听TCP端口3001。最后一件事,你的节点端口范围是30000-32767还是你自己定制的?更多信息通过运行此命令,Kubectl get service-o yamldid您是否尝试直接访问公共IP而不是主机名?使用curl,您可以如下设置主机
    curl-H“host:api.testcompany.com”
    以避免DNS延迟或错误配置您安装了什么
    ingress controller
    ?你能提供链接吗?是
    ingress nginx
    还是
    kubernetes ingress
    ?您是否也可以共享您的整个
    入口
    清单,以便我们可以查看所有注释等+1.请回答上述问题。当您
    curl
    直接访问服务IP时,它是否正常工作?@Milad谢谢您的评论。来自nodeport的端口在默认范围之间。在本地,它正在工作,但我在本地没有域。谢谢你的评论,这很有用@guillaumeblaquiere感谢您的评论。如果我尝试访问ingress nginx控制器外部ip,我就得到了404。感谢步骤3之前的答案,一切正常,我应该检查ingress规范规则和防火墙。谢谢你,福斯托福萨罗,你的回答对分析一切都很有帮助。我缺少的是在CGP网络DNS中设置子域。感谢第三步的答案一切正常我应该检查入口规范规则和防火墙。谢谢你,福斯托福萨罗,你的回答对分析一切都很有帮助。我缺少的是在CGP网络DNS中设置子域。谢谢