部署冲突端口

当两个服务选择相同工作负载且具有相同的 targetPort 但不同的 port 时,会出现此消息。

一个例子

考虑一个具有以下服务的 Istio 网格

apiVersion: v1
kind: Service
metadata:
  name: nginx-a
spec:
  ports:
    - port: 8080
      protocol: TCP
      targetPort: 80
  selector:
    app: nginx
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-b
spec:
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: nginx

在本例中,服务nginx-a和服务nginx-b选择相同的负载nginx,使用相同的targetPort,但port不同。

如何解决

这可以通过两种方式之一解决

  • 使两个服务使用相同的port。这将需要重新配置其中一个服务的客户端,使其连接到不同的port
  • 使两个服务使用不同的targetPort。这将需要配置其中一个服务的负载 Pod,使其监听与另一个服务相同的targetPort