gpt4 book ai didi

nginx - Nginx Controller 的入口不起作用,地址丢失

转载 作者:行者123 更新时间:2023-12-05 00:44:45 29 4
gpt4 key购买 nike

我有一个 Kubernetes 集群在 1 个 master、2 个 worker setup ob linux 服务器上运行。我有一个 HAProxy 将我的请求转发到 Nginx Controller 。我的完整设置位于公司代理后面。在此公司代理中启用了 DNS 条目。请求将到达 nginx Controller ,但不会转发到服务。我按照许多教程的描述安装了入口 Controller ,文件位于 https://github.com/kubernetes/ingress-nginx 中。 .

我是堆栈溢出的新手,所以如果我应该提供更具体的信息,请告诉我。我希望有人可以帮助我解决我的问题,提前谢谢你:D

我的 Ingress 缺少地址:

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>

Deployment、Service和Ingress、IngressClass、ConfigMap的Yaml文件

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:

来自集群外部的 Curl 和来自 Controller Pod 的日志

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)

最佳答案

查看 Ingress 定义,我发现它错过了 ingress 类。您将 IngressClass 定义为要使用的默认类,或者这可能是您的 Ingress 目前无法正常工作的原因。

Ingress Class 基本上是一个类别,它指定谁需要服务和管理 Ingress,这是必要的,因为在集群中您可以拥有多个 Ingress Controller ,每个 Controller 都有其规则和配置。

根据 Kubernetes 版本,可以在入口(v1.18 之前)上使用注解定义入口类,例如:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
...

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

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

如果你不确定你应该使用哪个入口类,那应该由 Controller 定义,你可能在安装它时决定了一个,或者你使用了默认的一个(大多数时候是 nginx)

关于nginx - Nginx Controller 的入口不起作用,地址丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65979766/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com