首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx控制器无法工作的入口,地址丢失

Nginx控制器无法工作的入口,地址丢失
EN

Stack Overflow用户
提问于 2021-01-31 13:41:06
回答 1查看 11.1K关注 0票数 3

我有一个Kubernetes集群,运行在一个1主服务器上,2个工作人员安装ob linux服务器上。我有一个HAProxy将我的请求转发给Nginx控制器。我的完整设置是在一个公司代理的后面。在此公司代理中启用DNS条目。请求将到达nginx控制器,但不会被转发到服务。我在许多教程中安装了入口控制器,其中包含了https://github.com/kubernetes/ingress-nginx中的文件。

我对堆栈溢出很陌生,所以如果我需要提供更多的具体信息,请告诉我。我希望有人能帮我解决我的问题,谢谢。

我的出题与丢失地址:

代码语言:javascript
复制
Name:             app-ingress
Namespace:        default
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host                       Path  Backends
  ----                       ----  --------
  test.kubetest.lff.bybn.de
                             /abc   app-service:80 (10.244.2.4:3000)
Annotations:                 kubernetes.io/ingress.class: nginx
Events:                      <none>

Yaml部署、服务和侵入文件,IngressClass,ConfigMap

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: app
  name: app-blue
spec:
  replicas: 1
  selector:
    matchLabels:
      run: app
      version: 0.0.1
  template:
    metadata:
      labels:
        run: app
        version: 0.0.1
    spec:
      containers:
      - name: app
        image: errm/versions:0.0.1
        ports:
        - containerPort: 3000
----



apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  selector:
    run: app
    version: 0.0.1
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 3000
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: test.kubetest.lff.bybn.de
    http:
      paths:
      - path: /abc
        backend:
          serviceName: app-service
          servicePort: 80
---

apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
  name: nginx
  # annotations:
  #   ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: nginx.org/ingress-controller
---

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
  namespace: nginx-ingress
data:

来自集群外部的卷和来自Controller 的日志

代码语言:javascript
复制
curl test.kubetest.lff.bybn.de/abc
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    93    0    93    0     0      1      0 --:--:--  0:00:50 --:--:--    26<html><body><h1>504 Gateway Time-out</h1>
The server didn't respond in time.
</body></html>



E0131 19:44:11.949261       1 reflector.go:138] /home/runner/work/kubernetes-ingress/kubernetes-ingress/internal/k8s/controller.go:574: Failed to watch *v1.Policy: failed to list *v1.Policy: the server could not find the requested resource (get policies.k8s.nginx.org)
E0131 19:45:06.894791       1 reflector.go:138] /home/runner/work/kubernetes-ingress/kubernetes-ingress/internal/k8s/controller.go:574: Failed to watch *v1.Policy: failed to list *v1.Policy: the server could not find the requested resource (get policies.k8s.nginx.org)
E0131 19:45:48.532075       1 reflector.go:138] /home/runner/work/kubernetes-ingress/kubernetes-ingress/internal/k8s/controller.go:574: Failed to watch *v1.Policy: failed to list *v1.Policy: the server could not find the requested resource (get policies.k8s.nginx.org)
10.48.25.57 - - [31/Jan/2021:19:46:35 +0000] "GET /abc HTTP/1.1" 499 0 "-" "curl/7.73.0" "-"
E0131 19:46:37.902444       1 reflector.go:138] /home/runner/work/kubernetes-ingress/kubernetes-ingress/internal/k8s/controller.go:574: Failed to watch *v1.Policy: failed to list *v1.Policy: the server could not find the requested resource (get policies.k8s.nginx.org)
E0131 19:47:15.346193       1 reflector.go:138] /home/runner/work/kubernetes-ingress/kubernetes-ingress/internal/k8s/controller.go:574: Failed to watch *v1.Policy: failed to list *v1.Policy: the server could not find the requested resource (get policies.k8s.nginx.org)
E0131 19:47:48.536636       1 reflector.go:138] /home/runner/work/kubernetes-ingress/kubernetes-ingress/internal/k8s/controller.go:574: Failed to watch *v1.Policy: failed to list *v1.Policy: the server could not find the requested resource (get policies.k8s.nginx.org)
E0131 19:48:21.890770       1 reflector.go:138] /home/runner/work/kubernetes-ingress/kubernetes-ingress/internal/k8s/controller.go:574: Failed to watch *v1.Policy: failed to list *v1.Policy: the server could not find the requested resource (get policies.k8s.nginx.org)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-31 14:29:23

看一下“侵入”的定义,我发现它忽略了“入口”类。您可以将带注释的IngressClass定义为要使用的默认类,或者这可能是当前您的进题无法工作的原因。

一个宏类基本上是一个类别,它指定谁需要服务和管理这个宏,这是必要的,因为在一个集群中,您可以有多个宏控制器,每个控制器都有自己的规则和配置。

根据Kubernetes版本的不同,可以在ingress上定义ingress类(在V1.18之前),例如:

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  ...

或者使用一个完整的资源,然后引用到into中,如文档(https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class)中所示

即使在Kubernetes的新版本中,旧的注释仍然可能被支持,这取决于控制器。

如果您不确定您应该使用什么入口类(这应该由控制器来定义),您可能在安装它时决定使用一个类,或者使用默认的类(大多数情况下是nginx)。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65979766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档