为什么使用kubectl命令列出Istio网关会返回空值或者没有返回Istio网关资源?

本文介绍使用kubectl命令列出Istio网关会返回空值或者没有返回Istio网关资源的问题现象、问题原因和解决方案。

问题现象

已创建Istio网关。执行以下命令,返回No resources found,或者没有返回Istio网关资源。

kubectl get gateway --all-namespaces

问题原因

ASM v1.8.6及以上版本可能会发生此问题,因为从该版本开始ASM会自动安装自定义资源gateway.networking.x-k8s.io。更多信息,请参见使用Gateway API定义路由规则

Kubernetes Gateway API和Istio API都有一个名为Gateway的资源。虽然它们功能类似,但不是相同的资源。使用kubectl命令时,Gateway的名称会重叠。执行kubectl get gateway可能返回的是Kubernetes网关资源,而不是Istio网关资源。如果此时没有定义Kubernetes网关资源,则返回的会是空值。如果定义了Kubernetes网关资源,则返回的是Kubernetes网关资源。

解决方案

  • 使用ASM控制台查看Istio网关。

  • 在kubectl命令中使用完整的资源名称或易辨认的简称。

    Kubernetes网关的简称为gtw,Istio网关的简称为gw。您可以执行kubectl get gwkubectl get gateways.networking.istio.io以确保返回的是Istio网关。