如何解决Ingress Controller仅将请求路由到我的服务
该问题可能没有那么有用,因为我无法每次都重现该错误,并且如果无法清楚地描述我的问题,我会提前道歉。我正在创建一个Kubernetes集群,我有一些服务,其中每个服务都有一个唯一的主机。我的文件夹结构是这样的:
- service 1
- base
- deployment.yaml
- kostumization.yaml
- service.yaml
- master
- ingress.yaml
- kostumization.yaml
- service 2
- base
- deployment.yaml
- kostumization.yaml
- service.yaml
- master
- ingress.yaml
- kostumization.yaml
service.yaml
是一项简单的服务:
kind: Service
apiVersion: v1
metadata:
name: url-shrink-backend
spec:
type: ClusterIP
selector:
app: url-shrink-backend
ports:
- port: 8080
name: backed-port
这是deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: url-shrink-backend
spec:
selector:
matchLabels:
app: url-shrink-backend
template:
metadata:
labels:
app: url-shrink-backend
spec:
containers:
- name: url-shrink-backend
image: <gitlab-url>
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: url-shrink-backend-config
imagePullSecrets:
- name: regcred
在kostumization.yaml
文件夹中还有base
:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- service.yaml
- deployment.yaml
现在为ingress.yaml
和kostumization.yaml
文件所在的主文件夹:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: url-shrink-backend-ingress
namespace: auto-responder-test
spec:
rules:
- host: sh.rbdx.it
http:
paths:
- backend:
serviceName: url-shrink-backend
servicePort: 8080
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base
- ingress.yaml
configMapGenerator:
- literals:
- ADDRESS=0.0.0.0
- PORT=8080
name: url-shrink-backend-config
namespace: auto-responder-test
images:
- name: <gitlab-url>
newTag: 2020-10-21-15-29
这是我的文件夹结构和文件的概述。每个服务具有基本相同的配置,其中仅名称和主机(每个都有唯一的主机)都发生更改。它们位于相同的命名空间auto-responder-test
下。
现在回到问题所在。我在sitesground
购买了一个域,并用cloudflare
配置了它。未配置任何内容时,空白网站的默认页面为404。创建集群后,我发现了一些奇怪的东西。对我的服务的请求有时是 发出的。因此,有时它会显示空白页,有时还会正确显示我的服务。我看到了后端的日志,并且在显示404页面时,没有任何传入请求的踪迹,因此Ingress不会路由任何内容。这仅是我的一项服务(url-shrink)有问题。其他的都可以正常工作。
我认为可能不是吗?
我不认为这是与浏览器缓存有关的问题。我尝试使用不同的浏览器,邮递员进行努力的刷新,但仍然得到不确定的行为,路由选择不正确。
我认为可能是什么?
我认为这可能与我定义入口控制器的方式有关。也许有更好的方法来组织所有入口文件,而不会使路由混乱。或可能与cloudflare
中的某些内部缓存有关。
我尝试过的事情
我尝试为所有此类服务仅创建一个入口控制器:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: backend-ingress
namespace: auto-responder-test
spec:
rules:
- host: sh.rbdx.it
http:
paths:
- backend:
serviceName: url-shrink-backend
servicePort: 8080
- host: api.rbdx.it
http:
paths:
- backend:
serviceName: api-backend
servicePort: 5000
到目前为止,仍然没有任何效果。是什么原因导致这种奇怪的行为?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。