Kubernetes入口路径仅适用于/
我已经配置了kubernetes入口服务,但它仅在路径为/ 我尝试了路径的各种不同值,包括:Kubernetes入口路径仅适用于/,kubernetes,Kubernetes,我已经配置了kubernetes入口服务,但它仅在路径为/ 我尝试了路径的各种不同值,包括: /* /servicea /servicea/ /servicea/* 这是我的入口配置(有效) 这是我的节点端口服务 - apiVersion: v1 kind: Service metadata: name: servicea-nodeport spec: type: NodePort ports: - port: 80 targetPort
/*
/servicea
/servicea/
/servicea/*
这是我的入口配置(有效)
这是我的节点端口服务
- apiVersion: v1
kind: Service
metadata:
name: servicea-nodeport
spec:
type: NodePort
ports:
- port: 80
targetPort: 8081
nodePort: 30124
selector:
app: servicea
这是我的部署
- apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: servicea
spec:
replicas: 1
template:
metadata:
name: ervicea
labels:
app: servicea
spec:
containers:
- image: 350329402011.dkr.ecr.eu-west-2.amazonaws.com/servicea
name: servicea
ports:
- containerPort: 8080
protocol: TCP
- image: 350329402011.dkr.ecr.eu-west-2.amazonaws.com/serviceb
name: serviceab
ports:
- containerPort: 8081
protocol: TCP
如果路径是/那么我可以这样做
但由于我将有多个服务,我想这样做:但是当我将路径设置为/servicea时,我得到了一个404
我正在AWS上运行kubernetes,带有ingress nginx ingress控制器
有什么想法吗?你不是在使用kubernetes吊舱,因为它们是要使用的 它包含一个或多个相对紧密耦合的应用程序容器——在容器之前的世界中,它们将在同一物理或虚拟机上执行 如果您有两个应用程序,
servicea
和serviceb
,它们应该在不同的pod上运行:一个pod用于servicea
,另一个pod用于serviceb
。这有很多好处:您可以单独部署它们,独立地扩展它们,等等。
作为
Pod代表一个部署单元:Kubernetes中应用程序的单个实例,可能由单个容器或少量紧密耦合并共享资源的容器组成
可以使用部署
创建这些吊舱,就像您已经在做的那样。那很好,我推荐
一旦部署
运行,您将创建一个不同的服务
,该服务将平衡给定部署
的所有Pod
之间的流量
最后,您希望根据请求URL点击servicea
或serviceb
。这可以通过入口
完成,正如您尝试的那样,但是。比如说
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: my.url.com
http:
paths:
- path: /servicea
backend:
serviceName: servicea
servicePort: 80
- path: /serviceb
backend:
serviceName: serviceb
servicePort: 80
这样,使用/servicea路径发送到入口控制器的请求将由
servicea
服务后面的pod提供服务。而使用/serviceb路径发送到入口控制器的请求将由serviceb
服务后面的pod提供服务。对于任何阅读本文的人来说,我的配置是正确的(尽管Fiunchino指出这是非正统的),错误是在容器中运行的Spring Boot应用程序中。我需要更改上下文路径以匹配入口路径-当然,我可以更改Spring控制器中的@GetMapping和@PostMapping方法,但我选择更改上下文路径。谢谢您的回复。您是对的,我没有以推荐的方式使用容器,但在本例中,容器代表一个整体,必须一起缩放,并且需要一起运行。碰巧,我遇到的错误不是我的Kubernetes配置,而是我的应用程序,我花了一段时间才弄清楚。“错误在我的Spring Boot中”如果我尝试连接到不是我的应用程序怎么办?如何修改根路径?
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: my.url.com
http:
paths:
- path: /servicea
backend:
serviceName: servicea
servicePort: 80
- path: /serviceb
backend:
serviceName: serviceb
servicePort: 80