正在设置jaeger跟踪。。。因此,之前我有一个二进制可执行文件(jaeger代理(在Linux CentOS 8盒子上运行,旁边还有一个服务器端应用程序。跟踪跨度被发送到端口14250上的jaeger收集器服务(由kubernetes设置(,一切正常。最近,由于系统崩溃,我们不得不重新启动jaeger跟踪服务。现在事情已经停止了,从日志中可以看到";504网关超时";并且该代理不能再与收集器通信。
在AWS中,我们运行的是kubernetes服务";jaeger收集器";符合这里的服务https://github.com/jaegertracing/jaeger-kubernetes/blob/master/jaeger-production-template.yml唯一的区别是我使用的是1.16版本。
该服务没有外部IP。如何使用curl
测试与jaeger收集器服务的通信?或者我需要一个外部IP,也许这就是网关超时的原因?我尝试将curl
与ClusterIP一起使用,但似乎不起作用。
我尝试在Kubernetes 1.16集群上应用您的文件,但它有几个问题:
- 它使用在Kubernetes 1.16中退役的apiVersions。即
apiVersion: extensions/v1beta1
应该变成apps/v1
- Deployments没有任何选择器,Daemoset也没有
.spec.selector字段定义部署如何查找要管理的Pod。
你似乎在应用一些超旧的东西。Kubernetes在其文档中注意到了以下内容,所以我想知道这是否适用于默认选择器的旧版本Kubernete。
从Kubernetes 1.8开始,您必须指定一个与.spec.template标签匹配的pod选择器。pod选择器为空时将不再是默认值。
你似乎应该采取一种新的方法——环顾四周,我在这里和这里找到了一些很好的教程,Jaeger自己也在这里提供了类似的方法。它们都使用Kubernetes运算符。
Kubernetes操作员是一个特定于应用程序的控制器,它扩展了Kubernetesneneneba API的功能,以代表Kubernete用户创建、配置和管理复杂应用程序的实例
我不知道你说的"是什么意思;所以之前我有一个二进制可执行文件(jaeger代理(运行在Linux CentOS 8盒子上,旁边还有一个服务器端应用程序">
您正在应用的文件看起来像是将代理部署为守护进程集,这意味着代理在集群的每个节点上都作为pod运行。如果它在您的k8集群中运行,那么这就是我通常对kubernetes服务进行故障排除的方法。如果它完全在集群之外运行,那么您需要确保与它对话的服务可能使用LoadBalancer类型在集群之外公开。