Istio 支持多种不同的所谓的 ServiceDiscovery 实现。
Kubernetes 就是其中之一,它从 Kubernetes 服务中发现服务。
但这实际上只是运行 Istio Pilot 的一种可能方式,您可以通过命令行参数 --registries Consul 使用其他 ServiceDiscovery 机制 line Consul。
有关命令行参数的详细说明,请参阅https://archive.istio.io/v1.4/docs/reference/commands/pilot-discovery/。
一旦您使用该配置运行 Pilot,它应该仅从 Consul 加载服务。这些应该以通常的名称<service name>.service.consul 推送到数据平面。
更新:
从您下面的评论看来,您不仅不想从 Kubernetes 加载服务,而且通常在没有它的情况下完全运行。
虽然这在 1.4 中似乎确实不可能 - 即始终启动监视 Istio 资源 - 但它似乎适用于 1.5。
为了实现这一点,您可以使用 --disable-install-crds 和 --configDir
<config path> 开始试点,其中 <config path> 指向一个目录,其中包含您可能仍需要的 Istio 特定资源的 yaml,例如 Sidecars、MeshPolicy、EnvoyFilter 等。
如果没有定义--configDir,Pilot 仍然会尝试从 Kubernetes 获取这些资源,因此即使目录为空,也必须添加此参数。
最后,您应该确保通过 --meshConfig meshconfig.yaml 传递给 Pilot 的 MeshConfig 不会通过将其注释掉来指向厨房的 URL,以防您从正在运行的 Pilot 实例复制了现有文件 /etc/istio/config/mesh:
configSources:
#- address: istio-galley.istio-system.svc:9901
# tlsSettings:
# mode: ISTIO_MUTUAL