DeploymentConflictingPorts

消息名称DeploymentConflictingPorts
消息代码IST0137
描述Two services selecting the same workload with the same targetPort MUST refer to the same port.
等级Warning

当两个 Service 选择了同一个工作负载的同一个目标端口(targetPort),但是却指定了不同的服务端口,会出现此消息。

示例

在集群包含以下资源时:

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: nginx-a
  5. spec:
  6. ports:
  7. - port: 8080
  8. protocol: TCP
  9. targetPort: 80
  10. selector:
  11. app: nginx
  12. ---
  13. apiVersion: v1
  14. kind: Service
  15. metadata:
  16. name: nginx-b
  17. spec:
  18. ports:
  19. - port: 80
  20. protocol: TCP
  21. targetPort: 80
  22. selector:
  23. app: nginx

在这个示例中,Service nginx-anginx-b 选择了工作负载 nginx 的同一个目标端口 80,但是它们对应的服务端口(port)却不一致。

如何修复

修复此问题有两个选择,一是将两个 Service 的服务端口(port)统一,或者两个 Service 使用不同的目标端口(targetPort)。

选择第一种方法,需要重新配置客户端以连接到修改之后的服务端口。选择第二种方法需要修改工作负载的 Pod 监听到修改之后的目标端口以提供服务。