因此,我有一个入口 Controller 将流量路由到三个不同的服务,但是只有一个在工作,其他所有都返回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 ...并没有任何效果,欢迎任何帮助

最佳答案

如果可以,您应该将服务保留为ClusterIP。入口 Controller 的重点是使集群具有一个集中式入口。

首先尝试

首先独立测试您的服务。 (两个不起作用)。执行到另一个正在运行的pod中,然后执行以下操作:
curl http://web-equip-svc-2:18001,看看是否收到直接返回服务而不是通过入口返回的响应。如果一切正常,则说明入口规则配置和/或 Controller 存在问题。

如果它不起作用,那么您只知道运行这两个服务的实际容器/ pods ,就可以集中精力解决该问题。

尝试第二件事

简化您的入口规则。首先删除/equip-ws的路径,只保留/hello/equip的路径。

      - path: /equip-ws
        backend:
            serviceName: web-equip-svc-2
            servicePort: 18000

然后在更改了简化的入口规则的情况下再次测试http://localhost/hellohttp://localhost/equip

如果这行得通,那么您知道入口规则中的两个装备路径正在引起问题,您可以在那里解决冲突/问题。

10-05 23:20