ExternalNameServiceTypeInvalidPortName

对于 ExternalName 类型的服务,当端口不遵循 Istio 服务端口命名协议、端口未命名或端口命名为 TCP 时,会出现此消息。

例如

您将收到以下信息:

注意,当 [IST0150] (Service nginx.default) ExternalName 服务的端口名称无效。将收到代理对以 TCP 命名和服务于 TCP 协议的端口中的不匹配流量的正确转发进行阻止。

当您的集群有以下服务:

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  externalName: nginx.example.com
  ports:
  - name: tcp
    port: 443
    protocol: TCP
    targetPort: 443
  type: ExternalName

在本例中,端口名称 tcp 遵循以下语法: name: <protocol> 。但是,对于 ExternalName 服务,由于没有定义服务 IP,因此需要使用 SNI 字段进行路由。

解决方式

  • 如果您有一个服务类型为 ExternalName 并且服务协议为 TCP ,那么将端口重命名为 <protocol>[-<suffix>] 或者 <protocol> ,其中协议指的是 https 或者 tls 。想学得更多相关知识, 请查看显式协议选择文档。