微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决与kubernetes服务的通信问题

如何解决如何解决与kubernetes服务的通信问题

设置jaeger跟踪...因此以前,我在服务器端应用程序旁边的Linux CentOS 8盒上运行了一个二进制可执行文件(jaeger-agent)。跟踪范围已发送到端口14250上的jaeger-collector服务(由kubernetes设置),并且一切正常。然后最近由于系统崩溃,我们不得不重新启动jaeger跟踪服务。现在一切都停止了工作,并且日志中出现“ 504网关超时”,并且代理无法再与收集器通信。

在AWS中,我们正在运行一个符合此处服务的kubernetes服务“ jaeger-collector” https://github.com/jaegertracing/jaeger-kubernetes/blob/master/jaeger-production-template.yml的唯一区别是我使用的是1.16版。

该服务没有外部IP。如何使用curl测试与jaeger-collector服务的通信?还是我需要一个外部IP,也许这就是网关超时的原因?我尝试将curl与ClusterIP一起使用,但这似乎不起作用。

解决方法

我尝试将您的文件应用到Kubernetes 1.16集群上,但有几个问题:

  1. 它使用的是decommed in Kubernetes 1.16的apiVersions。即-apiVersion: extensions/v1beta1应该变成apps/v1
  2. Deployment没有任何选择器,Daemonset也没有。

.spec.selector字段定义部署如何查找要管理的Pod。

似乎您正在应用的东西已经过时了。 Kubernetes在其文档中记录了以下内容,因此我想知道它是否曾经在默认情况下使用选择器的Kubernetes旧版本上工作。

从Kubernetes 1.8开始,必须指定一个与.spec.template的标签匹配的pod选择器。保持为空时,pod选择器将不再为默认值。

似乎您应该采用一种新方法-在环顾四周时,我发现了一些不错的教程herehere,而Jaeger自己也提供了类似的方法here。它们都使用Kubernetes Operators

Kubernetes运算符是特定于应用程序的控制器,它扩展了Kubernetes API的功能,以代表Kubernetes用户创建,配置和管理复杂应用程序的实例

我不知道您的意思是“所以以前,我在服务器端应用程序旁边的Linux CentOS 8机器上运行了一个二进制可执行文件(jaeger-agent)”

您正在应用的文件看起来像deploys the agent as a daemonset,这意味着代理在集群的每个节点上作为Pod运行。如果它在您的k8集群中运行,则this is how I normally approach troubleshooting kubernetes services。如果它完全在集群外部运行,则需要确保与之通信的服务可能是使用LoadBalancer类型暴露在集群外部的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。