GatewayPortNotDefinedOnService

当 Gateway(通常是 istio-ingressgateway) 提供的端口与网关实例关联的 Kubernetes 服务(Service) 定义的端口不匹配时,GatewayPortNotDefinedOnService 消息将会出现。

例如,您的配置定义如下:

# 端口定义错误的 Gateway

apiVersion: networking.istio.io/v1
kind: Gateway
metadata:
  name: istio-ingressgateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
  - port:
      number: 8004
      name: http2
      protocol: HTTP
    hosts:
    - "*"
---

# 默认的网关 Service

apiVersion: v1
kind: Service
metadata:
  name: istio-ingressgateway
spec:
  selector:
    istio: ingressgateway
  ports:
  - name: status-port
    port: 15021
    protocol: TCP
    targetPort: 15021
  - name: http2
    port: 80
    protocol: TCP
    targetPort: 8080
  - name: https
    port: 443
    protocol: TCP
    targetPort: 8443

在此示例中,因为配置使用了端口 8004,但默认的 IngressGateway (名称为 istio-ingressgateway)只定义了目标端口 15021、8080 和 8443, 所以 GatewayPortNotDefinedOnService 消息出现。

要解决此问题,请更改网关配置以使用工作负载上的有效端口,然后重试。

以下是已更正的示例:

# 端口定义正确的 Gateway

apiVersion: networking.istio.io/v1
kind: Gateway
metadata:
  name: istio-ingressgateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 8080
      name: http2
      protocol: HTTP
    hosts:
    - "*"
  - port:
      number: 8443
      name: https
      protocol: HTTP
    hosts:
    - "*"