因此,我有一个将流量路由到三个不同服务的入口控制器,但是只有一个在工作,其他所有都返回503。 INGRESS YAML
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
namespace: dev
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
spec:
rules:
- host: localhost
http:
paths:
- path: /equip
backend:
serviceName: web-equip-svc-2
servicePort: 18001
- path: /hello
backend:
serviceName: hello-service
servicePort: 80
- path: /equip-ws
backend:
serviceName: web-equip-svc-2
servicePort: 18000
正在使用SVC YAML
apiVersion: v1
kind: Service
metadata:
name: hello-service
namespace: linkerd-test
labels:
app: hello
spec:
type: ClusterIP
selector:
app: hello
ports:
- port: 80
targetPort: 8080
protocol: TCP
不使用SVC YAML
---
apiVersion: v1
kind: Service
metadata:
name: web-equip-svc-2
namespace: dev
labels:
app: equipment-service
spec:
type: ClusterIP
selector:
app: equipment-service
ports:
- name: "http"
port: 18001
targetPort: 8080
protocol: TCP
- name: "websocket"
port: 18000
targetPort: 8080
protocol: TCP
因此,我已经尝试过将注释从Ingress更改,将svc从clusterIP更改为loadBalancer ...,但没有任何效果,欢迎任何帮助
答案 0 :(得分:2)
如果可以的话,应将服务保留为ClusterIP。入口控制器的目的是使您的集群具有一个集中式入口。
首先要尝试的
首先独立测试您的服务。 (两个不起作用)。进入另一个正在运行的pod,然后执行以下操作:
curl http://web-equip-svc-2:18001
,看看您是否收到直接返回服务而不是通过入口返回的响应。如果一切正常,那么您就知道入口规则配置和/或控制器存在问题。
如果它不起作用,那么您只知道运行这两个服务的实际容器/吊舱,就可以集中精力解决该问题。
第二件事尝试
简化您的进入规则。首先删除/equip-ws
的路径,只保留/hello
和/equip
的路径。
- path: /equip-ws
backend:
serviceName: web-equip-svc-2
servicePort: 18000
然后使用简化的入口规则再次测试http://localhost/hello
和http://localhost/equip
。
如果这行得通,那么您知道入口规则中的两条装备路径正在引起问题,您可以在那里解决冲突/问题。
答案 1 :(得分:2)
对我来说,我在另一个命名空间中的同一主机有另一个入口(我忘记了 它)
kubectl get ingress --all-namespaces | grep <HOST>
帮我找到了。
答案 2 :(得分:1)
终于找到了解决方案, 根据{{3}}的建议,我将规则拆分到不同的主机上,但是仍然没有成功,因此,我没有使用路径,而是在主机上添加了前缀,然后它起作用了。
rules:
- host: hello.localhost
http:
paths:
- path: /hello
backend:
serviceName: hello-service
servicePort: 280
- host: equip.localhost
http:
paths:
- backend:
serviceName: web-equip-svc
servicePort: 18001
- host: ws.equip.localhost
http:
paths:
- backend:
serviceName: web-equip-svc
servicePort: 18000