我有两个 AWS EKS Kubernetes 集群;在这两个中,我都尝试设置 Istio 将流量从集群外部路由到集群内的服务。
流程是网络负载均衡器 -> Istio Gateway -> Istio VirtualService
集群 A 运行良好。集群 B 在尝试创建 VirtualService 时遇到错误。是:
error: resource mapping not found for name: "service" namespace: "" from "my/def.yaml": no matches for kind VirtualService in version "networking.istio.io.v1alpha3" ensure CRDs are installed first
如果我执行
kubectl get crd
,则两个集群具有相同数量的条目,包括virtualservices.networking.istio.io
。如果我这样做 kubectl describe crd virtualservices.networking.istio.io
我会得到一个很长的输出:
Spec:
Conversion:
Strategy: None
Group: networking.istio.io
Names:
Categories:
istio-io
networking-istio-io
Kind: VirtualService
List Kind: VirtualServiceList
Plural: virtualservices
Short Names:
vs
Singular: virtualservice
Scope: Namespaced
两个集群都通过应用 https://istio-release.storage.googleapis.com/charts 中的 3 个 Helm 图表安装了 Istio,全部为 v1.17.3:
什么可能导致集群 B 无法应用 VirtualService,听起来像是缺少 CRD,但 CRD 似乎确实存在?
定义中有拼写错误。
apiVersion: networking.istio.io.v1alpha3
应该是
apiVersion: networking.istio.io/v1alpha3