Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/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
Kubernetes 我正在尝试将externalname与Nginx控制器的nodeport服务一起使用,但我得到了502坏网关_Kubernetes_Kubernetes Ingress - Fatal编程技术网

Kubernetes 我正在尝试将externalname与Nginx控制器的nodeport服务一起使用,但我得到了502坏网关

Kubernetes 我正在尝试将externalname与Nginx控制器的nodeport服务一起使用,但我得到了502坏网关,kubernetes,kubernetes-ingress,Kubernetes,Kubernetes Ingress,环境: 我有: 1-NGINX入口控制器版本:1.15.9,图像:0.23.0 2-Kubernetes版本: 客户端版本:Version.Info{Major:“1”,Minor:“13”, GitVersion:“v1.13.4”, GitCommit:“c27b913fddd1a6c480c229191a087698aa92f0b1”, 吉特庄园:“干净”,建造日期:“2019-02-28813:37:52Z”, GoVersion:“go1.11.5”,编译器:“gc”,平台:“linu

环境:

我有:

1-NGINX入口控制器版本:1.15.9,图像:0.23.0

2-Kubernetes版本:

客户端版本:Version.Info{Major:“1”,Minor:“13”, GitVersion:“v1.13.4”, GitCommit:“c27b913fddd1a6c480c229191a087698aa92f0b1”, 吉特庄园:“干净”,建造日期:“2019-02-28813:37:52Z”, GoVersion:“go1.11.5”,编译器:“gc”,平台:“linux/amd64”}

服务器版本:Version.Info{Major:“1”,Minor:“13”, GitVersion:“v1.13.4”, GitCommit:“c27b913fddd1a6c480c229191a087698aa92f0b1”, 吉特庄园:“干净”,建造日期:“2019-02-28813:30:26Z”, GoVersion:“go1.11.5”,编译器:“gc”,平台:“linux/amd64”}

云提供商或硬件配置:KVM上的虚拟机

OS(例如从/etc/OS发布):

NAME=“CentOS Linux”VERSION=“7(Core)”ID=“CentOS”ID_LIKE=“rhel fedora“VERSION\u ID=“7”PRETTY\u NAME=“CentOS Linux 7(核心)” ANSI_COLOR=“0;31”CPE_NAME=“CPE:/o:centos:centos:7” 主页地址=”https://www.centos.org/" 错误报告URL=”https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT=“CENTOS-7”CENTOS_MANTISBT_PROJECT_VERSION=“7” REDHAT\u SUPPORT\u PRODUCT=“centos”REDHAT\u SUPPORT\u PRODUCT\u VERSION=“7”

内核(例如uname-a):

Linux节点01 3.10.0-957.5.1.el7.x86_64#1 SMP周五2月1日14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

安装工具:kubeadm

更多详细信息:

CNI:编织

设置:

  • 2个弹性HA代理、3个主节点、2个次节点和工作节点
  • 我将所有服务公开为节点端口,HA代理将它们重新分配给公共虚拟IP
  • 承载监测和测井工具(格拉法纳、普罗米修斯、EFK等)的infra节点上的专用项目
  • 作为持久性存储的后端NFS存储
  • 发生了什么: 我希望能够使用外部名称,而不是节点端口,因此,我不希望通过vip+3000访问grafana,而是希望通过

    部署

  • 我创建了一个名为ingress的新名称空间
  • 我将其部署如下:
  • 入口

    入口1

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      annotations:
        ingress.kubernetes.io/service-upstream: "true"
      creationTimestamp: "2019-03-25T21:13:56Z"
      generation: 1
      labels:
        app: jaeger
        app.kubernetes.io/component: query-ingress
        app.kubernetes.io/instance: jeager
        app.kubernetes.io/managed-by: jaeger-operator
        app.kubernetes.io/name: jeager-query
        app.kubernetes.io/part-of: jaeger
      name: jaeger-query
      namespace: monitoring-logging
      resourceVersion: "3111683"
      selfLink: /apis/extensions/v1beta1/namespaces/monitoring-logging/ingresses/jaeger-query
      uid: e6347f6b-4f42-11e9-9e8e-001a4a16021c
    spec:
      rules:
      - host: jaeger.example.com
        http:
          paths:
          - backend:
              serviceName: jeager-query
              servicePort: 16686
    status:
      loadBalancer: {}
    
    入口2

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"labels":{"app":"grafana"},"name":"grafana","namespace":"monitoring-logging"},"spec":{"rules":[{"host":"grafana.example.com","http":{"paths":[{"backend":{"serviceName":"grafana","servicePort":3000}}]}}]}}
      creationTimestamp: "2019-03-25T17:52:40Z"
      generation: 1
      labels:
        app: grafana
      name: grafana
      namespace: monitoring-logging
      resourceVersion: "3071719"
      selfLink: /apis/extensions/v1beta1/namespaces/monitoring-logging/ingresses/grafana
      uid: c89d7f34-4f26-11e9-8c10-001a4a16021d
    spec:
      rules:
      - host: grafana.example.com
        http:
          paths:
          - backend:
              serviceName: grafana
              servicePort: 3000
    status:
      loadBalancer: {}
    
    端点

    
    # Please edit the object below. Lines beginning with a '#' will be ignored,
    # and an empty file will abort the edit. If an error occurs while saving this file will be
    # reopened with the relevant failures.
    #
    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: "2019-03-25T16:03:01Z"
      labels:
        app: jaeger
        app.kubernetes.io/component: query
        app.kubernetes.io/instance: jeager
        app.kubernetes.io/managed-by: jaeger-operator
        app.kubernetes.io/name: jeager-query
        app.kubernetes.io/part-of: jaeger
      name: jeager-query
      namespace: monitoring-logging
      resourceVersion: "3055947"
      selfLink: /api/v1/namespaces/monitoring-logging/services/jeager-query
      uid: 778550f0-4f17-11e9-9078-001a4a16021e
    spec:
      externalName: jaeger.example.com
      ports:
      - port: 16686
        protocol: TCP
        targetPort: 16686
      selector:
        app: jaeger
        app.kubernetes.io/component: query
        app.kubernetes.io/instance: jeager
        app.kubernetes.io/managed-by: jaeger-operator
        app.kubernetes.io/name: jeager-query
        app.kubernetes.io/part-of: jaeger
      sessionAffinity: None
      type: ExternalName
    status:
      loadBalancer: {}
    # Please edit the object below. Lines beginning with a '#' will be ignored,
    # and an empty file will abort the edit. If an error occurs while saving this file will be
    # reopened with the relevant failures.
    #
    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: "2019-03-25T15:40:30Z"
      labels:
        app: grafana
        chart: grafana-2.2.4
        heritage: Tiller
        release: grafana
      name: grafana
      namespace: monitoring-logging
      resourceVersion: "3053698"
      selfLink: /api/v1/namespaces/monitoring-logging/services/grafana
      uid: 51b9d878-4f14-11e9-9078-001a4a16021e
    spec:
      externalName: grafana.example.com
      ports:
      - name: http
        port: 3000
        protocol: TCP
        targetPort: 3000
      selector:
        app: grafana
        release: grafana
      sessionAffinity: None
      type: ExternalName
    status:
      loadBalancer: {}
    
    
    端点1

    apiVersion: v1
    kind: Endpoints
    metadata:
      creationTimestamp: "2019-03-25T15:40:30Z"
      labels:
        app: grafana
        chart: grafana-2.2.4
        heritage: Tiller
        release: grafana
      name: grafana
      namespace: monitoring-logging
      resourceVersion: "3050562"
      selfLink: /api/v1/namespaces/monitoring-logging/endpoints/grafana
      uid: 51bb1f9c-4f14-11e9-9e8e-001a4a16021c
    subsets:
    - addresses:
      - ip: 10.42.0.15
        nodeName: kuinfra01.example.com
        targetRef:
          kind: Pod
          name: grafana-b44b4f867-bcq2x
          namespace: monitoring-logging
          resourceVersion: "1386975"
          uid: 433e3d21-4827-11e9-9e8e-001a4a16021c
      ports:
      - name: http
        port: 3000
        protocol: TCP
    
    端点2

    apiVersion: v1
    kind: Endpoints
    metadata:
      creationTimestamp: "2019-03-25T16:03:01Z"
      labels:
        app: jaeger
        app.kubernetes.io/component: service-query
        app.kubernetes.io/instance: jeager
        app.kubernetes.io/managed-by: jaeger-operator
        app.kubernetes.io/name: jeager-query
        app.kubernetes.io/part-of: jaeger
      name: jeager-query
      namespace: monitoring-logging
      resourceVersion: "3114702"
      selfLink: /api/v1/namespaces/monitoring-logging/endpoints/jeager-query
      uid: 7786d833-4f17-11e9-9e8e-001a4a16021c
    subsets:
    - addresses:
      - ip: 10.35.0.3
        nodeName: kunode02.example.com
        targetRef:
          kind: Pod
          name: jeager-query-7d9775d8f7-2hwdn
          namespace: monitoring-logging
          resourceVersion: "3114693"
          uid: fdac9771-4f49-11e9-9e8e-001a4a16021c
      ports:
      - name: query
        port: 16686
        protocol: TCP
    
    我能够从入口控制器盒内部卷曲端点:

    # kubectl exec -it nginx-ingress-controller-5dd67f88cc-z2g8s  -n ingress -- /bin/bash
    www-data@nginx-ingress-controller-5dd67f88cc-z2g8s:/etc/nginx$ curl -k https://localhost
    <a href="/login">Found</a>.
    
    www-data@nginx-ingress-controller-5dd67f88cc-z2g8s:/etc/nginx$ curl http://localhost
    <html>
    <head><title>308 Permanent Redirect</title></head>
    <body>
    <center><h1>308 Permanent Redirect</h1></center>
    <hr><center>nginx/1.15.9</center>
    </body>
    </html>
    www-data@nginx-ingress-controller-5dd67f88cc-z2g8s:/etc/nginx$ exit
    

    首先感谢CookieMough提供有关服务问题的帮助线索,但后来我遇到了使用外部名称创建服务的问题,但我发现了我的错误,这要感谢处于空闲状态的“长”用户,错误在于我使用的是ExternalName类型的服务,应该是cluster IP类型。以下是解决问题的步骤(备注https问题是一个单独的问题): 1-创建指向公共IP的通配符DNS区域 1-对于新服务,只需创建ClusterIP类型的服务 2-在服务的命名空间中,使用以下示例(yaml)创建入口:

    3-kubectl-f apply-f grafana-ingress.yaml
    现在,您可以在

    上访问您的grafana。您是否在DNS提供商端为子域添加了指向nginx ingress controller静态IP的A记录?是的,我为*.example.com创建了一个通配符区域,指向haproxyCan中的vip。您可以添加
    kubernetes.io/ingress.class:nginx
    作为对您的ingress yaml的注释?谢谢艾德解决了这个问题
    # kubectl exec -it nginx-ingress-controller-5dd67f88cc-z2g8s  -n ingress -- /bin/bash
    www-data@nginx-ingress-controller-5dd67f88cc-z2g8s:/etc/nginx$ curl -k https://localhost
    <a href="/login">Found</a>.
    
    www-data@nginx-ingress-controller-5dd67f88cc-z2g8s:/etc/nginx$ curl http://localhost
    <html>
    <head><title>308 Permanent Redirect</title></head>
    <body>
    <center><h1>308 Permanent Redirect</h1></center>
    <hr><center>nginx/1.15.9</center>
    </body>
    </html>
    www-data@nginx-ingress-controller-5dd67f88cc-z2g8s:/etc/nginx$ exit
    
    10.39.0.0 - [10.39.0.0] - - [25/Mar/2019:16:40:32 +0000] "GET /search HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" 514 0.001 [monitoring-logging-jeager-query-16686] vip:16686, vip:16686, vip:16686 0, 0, 0 0.001, 0.000, 0.000 502, 502, 502 b7c813286fccf27fffa03eb6564edfd1
    2019/03/25 16:40:32 [error] 2816#2816: *4617326 connect() failed (111: Connection refused) while connecting to upstream, client: 10.39.0.0, server: _, request: "GET /favicon.ico HTTP/1.1", upstream: "http://vip:16686/favicon.ico", host: "jeager.example.com", referrer: "http://jeager.example.com/search"
    2019/03/25 16:40:32 [error] 2816#2816: *4617326 connect() failed (111: Connection refused) while connecting to upstream, client: 10.39.0.0, server: _, request: "GET /favicon.ico HTTP/1.1", upstream: "http://vip:16686/favicon.ico", host: "jeager.example.com", referrer: "http://jeager.example.com/search"
    2019/03/25 16:40:32 [error] 2816#2816: *4617326 connect() failed (111: Connection refused) while connecting to upstream, client: 10.39.0.0, server: _, request: "GET /favicon.ico HTTP/1.1", upstream: "http://vip:16686/favicon.ico", host: "jeager.example.com", referrer: "http://jeager.example.com/search"
    10.39.0.0 - [10.39.0.0] - - [25/Mar/2019:16:40:32 +0000] "GET /favicon.ico HTTP/1.1" 502 559 "http://jeager.example.com/search" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" 494 0.001 [monitoring-logging-jeager-query-16686] vip:16686, vip:16686, vip:16686 0, 0, 0 0.000, 0.001, 0.000 502, 502, 502 9e582912614e67dfee6be1f679de5933
    I0325 16:40:32.497868       8 socket.go:225] skiping metric for host jeager.example.com that is not being served
    I0325 16:40:32.497886       8 socket.go:225] skiping metric for host jeager.example.com that is not being served
    
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
    labels:
    app: grafana
    name: grafana
    namespace: grafana-namespace
    spec:
    rules:
    
    host: grafana.example.com
    http:
    paths:
    backend:
    serviceName: grafana
    servicePort: 3000