0

我已经使用带有以下设置的 helm 图表安装了 Istio:

helm template --set kiali.enabled=true --set tracing.enabled=true --set pilot.traceSampling=100 --set grafana.enabled=true --set sidecarInjectorWebhook.enabled=true install/kubernetes/helm/istio --name istio --namespace istio-system > istio.yaml

当我检查istio-system命名空间下集群中运行的服务时,我看到跟踪周围的多个服务。

jaeger-agent             ClusterIP      None      <none>     5775/UDP,6831/UDP,6832/UDP                                                                                                                   
jaeger-collector         ClusterIP      10.100.66.107    <none>  14267/TCP,14268/TCP
tracing                  ClusterIP      10.100.81.123    <none>   80/TCP                                                                                                                                       
zipkin                   ClusterIP      10.100.64.9      <none>   9411/TCP 

由于 Jaeger 是默认设置,因此我希望只看到jaeger-collector. 目前尚不清楚任何想法的作用是jaeger-agent什么?,tracingzipkin

4

2 回答 2

6

只是事先提到(您可能已经知道)Kubernetes Service 不是一段代码中的“服务”。这是 Kubernetes 组件和部署通过始终保持不变的接口相互通信的一种方式,无论有多少 pod 或服务器。

当 Istio 部署它的跟踪机制时,它会部署模块化部分,因此它可以独立部署它们,也可以独立扩展它们,非常类似于微服务。

通常,Kubernetes 部署的实用程序将部署为构成更大图景的几个部分。例如在你的情况下:

jaeger-agent - 这是将从您的节点收集所有流量和跟踪的组件。

jaeger-collector - 这是所有 jaeger-agent 推送他们在节点上找到的日志和跟踪的地方,收集器将聚合这些,因为跟踪可能跨越多个节点。

跟踪 - 可能是将跟踪 ID 注入网络流量以供代理观察的组件。

zipkin - 可以是允许使用跟踪调试或重放请求等的 UI。

以上可能不是绝对正确的,但我希望您了解为什么要部署多个部分。

与我们分别部署 mysql 和容器的方式相同,Kubernetes 项目通常部署为一组部署或 pod。

于 2019-09-13T06:31:04.977 回答
1

为了补充@christiaan-vermeulen 的回答:该tracing服务是 Jaeger 的 UI(jaeger-query),因此可以将相同的 URL 用于替代后端,而 Zipkin 服务是一种便利服务,允许使用 Zipkin 跟踪器(如 Brave)的应用程序发送无需复杂更改即可将数据传输到 Jaeger。如果您仔细观察,Zipkin 服务也由 jaeger-collector 支持。

于 2019-09-23T08:52:53.360 回答