C# Jaeger服务:如何在Google Kubernetes上配置?
使用Docker Hub的公共映像在Google Kubernetes上创建部署 然后,公开服务类型为LoadBalancer的部署 现在,启动了Jagger UI,它正在工作,但除了Jagger query之外,它不显示任何服务 我已经部署了我的.NETWebAPI应用程序,以便在kubernetes上进行测试 我的应用程序只有一个web API,它在Google Kubernetes引擎上成功运行,并通过负载平衡器服务类型公开。API将所有数据硬编码,不调用任何其他服务或数据库 在项目中使用了以下nuget软件包: Jaeger-版本0.2.2C# Jaeger服务:如何在Google Kubernetes上配置?,c#,asp.net-core,google-kubernetes-engine,jaeger,opentracing,C#,Asp.net Core,Google Kubernetes Engine,Jaeger,Opentracing,使用Docker Hub的公共映像在Google Kubernetes上创建部署 然后,公开服务类型为LoadBalancer的部署 现在,启动了Jagger UI,它正在工作,但除了Jagger query之外,它不显示任何服务 我已经部署了我的.NETWebAPI应用程序,以便在kubernetes上进行测试 我的应用程序只有一个web API,它在Google Kubernetes引擎上成功运行,并通过负载平衡器服务类型公开。API将所有数据硬编码,不调用任何其他服务或数据库 在项目中使用
OpenTracing.Contrib.NetCore-版本0.5.0 我在API的Startup.cs文件中添加了以下代码:
services.AddSingleton<ITracer>(serviceProvider =>
{
//string serviceName = Assembly.GetEntryAssembly().GetName().Name;
string serviceName = serviceProvider.GetRequiredService<IHostingEnvironment>().ApplicationName;
ILoggerFactory loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
ISampler sampler = new ConstSampler(sample: true);
string jaegerHost = Environment.GetEnvironmentVariable("jaeger_host");
var reporter = new RemoteReporter.Builder()
.WithLoggerFactory(loggerFactory)
.WithSender(new UdpSender(jaegerHost, 6831, 0)) // todo:
.Build();
ITracer tracer = new Tracer.Builder(serviceName)
.WithLoggerFactory(loggerFactory)
.WithSampler(sampler)
.WithReporter(reporter)
.Build();
GlobalTracer.Register(tracer);
return tracer;
});
services.AddOpenTracing();
services.AddSingleton(serviceProvider=>
{
//字符串serviceName=Assembly.GetEntryAssembly().GetName().Name;
字符串serviceName=serviceProvider.GetRequiredService().ApplicationName;
ILoggerFactory loggerFactory=serviceProvider.GetRequiredService();
ISampler sampler=新ConstSampler(样本:真);
字符串jaegerHost=Environment.GetEnvironmentVariable(“jaeger_主机”);
var reporter=new RemoteReporter.Builder()
.带loggerFactory(loggerFactory)
.Wissender(新UdpSender(jaegerHost,6831,0))//todo:
.Build();
ITracer tracer=新tracer.Builder(serviceName)
.带loggerFactory(loggerFactory)
.带取样器(取样器)
.WithReporter(记者)
.Build();
GlobalTracer.寄存器(跟踪器);
返回跟踪器;
});
AddOpenTracing();
jaegerHost环境变量被分配所创建的jaeger服务的IP
问题是如何以及在何处进行更改,以便我的应用程序服务在Jaeger UI中可用,以便我可以看到它的痕迹
我被困在这里,有人能帮我继续吗?jaeger代理服务应该是这样的
apiVersion: v1
kind: Service
metadata:
name: jaeger-agent
namespace: jaeger
labels:
app: jaeger
app.kubernetes.io/name: jaeger
app.kubernetes.io/component: agent
spec:
type: LoadBalancer
ports:
- name: agent-compact
port: 6831
protocol: UDP
targetPort: 6831
- name: agent-binary
port: 6832
protocol: UDP
targetPort: 6832
- name: agent-configs
port: 5778
protocol: TCP
targetPort: 5778
selector:
app.kubernetes.io/name: jaeger
app.kubernetes.io/component: all-in-one
不要使用IP,请使用FQDN。
首先,尝试对jaegerHost
string jaegerHost = "jaeger-agent.jaeger";
其中jaeger代理
-服务名称,jaeger
-服务名称空间
另外,您应该创建
jaeger收集器
服务您的应用程序是否由单独部署的前端和后端部分组成?据我所知,您的前端吊舱完成了它们的工作,并且您能够通过LoadBalancer服务成功地公开它们。他们是否正在与一些后端播客通信?您是否定义了任何其他服务来将后端吊舱公开给前端吊舱?@mario我的应用程序只有一个web API,它在Google Kubernetes引擎上成功运行,并通过负载平衡器服务类型公开。API将所有数据硬编码,不调用任何其他服务或数据库。但是,该服务在Jagger UI上不可见。@mario请检查问题“jaegerHost环境变量已分配创建的jaeger服务的IP”中的我的更新。-在本文中,您是指kubernetes服务
?你能不能再多说一点你是如何在kubernetes上部署它的?它是由部署
管理还是由状态集
管理?我不确定您是否不必通过jaeger_host
env var将jaegerHost
设置为Pod
的FQDN。。。我想它需要能够绑定到主机地址。甚至localhost都可能是正确的值?还有一个细节。。。您是否如您在问题中所述设置了“jaeger_host”环境变量或jaegerHost
?