我已使用以下设置的舵图安装了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 None5775/UDP,6831/UDP,6832/UDP jaeger-collector ClusterIP 10.100.66.107 14267/TCP,14268/TCP tracing ClusterIP 10.100.81.123 80/TCP zipkin ClusterIP 10.100.64.9 9411/TCP
由于Jaeger是默认设置,因此我期望只看到jaeger-collector
。它并不清楚的角色是什么jaeger-agent
,tracing
以及zipkin
是,任何想法?,
只是事先提到(您可能已经知道),Kubernetes服务不是一段代码中的“服务”。这是Kubernetes组件和部署通过始终保持不变的接口相互通信的一种方式,无论有多少个Pod或服务器。
当Istio部署其跟踪机制时,它会部署模块化部件,因此它可以独立部署它们,也可以独立扩展它们,就像微服务一样。
通常,将Kubernetes部署的实用程序作为组成整体的几个部分进行部署。例如,在您的情况下:
jaeger-agent-这是将从您的节点收集所有流量和跟踪的组件。
jaeger-collector-在这里所有的jaeger-agent都会推送在节点上找到的日志和跟踪记录,并且收集器会汇总这些记录和跟踪记录,因为跟踪可能跨越多个节点。
跟踪-可能是将跟踪ID注入网络流量以供代理查看的组件。
zipkin-可能是允许使用跟踪进行调试或重播请求等的UI。
以上内容可能并不完全正确,但是我希望您能理解为什么要部署多个部分。
以与我们分别部署mysql和我们的容器相同的方式,Kubernetes项目通常被部署为一组部署或Pod。