问题描述
我将 NATS 部署到我的 kubernetes 集群,我的集群中的 nats-Box 镜像(与我的 NATS 镜像一起安装在 helm 中)显然可以连接到它,但我似乎无法让我自己的微服务连接到它. nats-Box 是如何成功的,而我自己的微服务却没有?
helm install my-nats nats/nats
使用名为“my-nats”的 statefulset 和名为“my-nats”的服务安装 NATS:
my-nats ClusterIP None <none>
4222/TCP,6222/TCP,8222/TCP,7777/TCP,7422/TCP,7522/TCP
但我的测试应用程序使用 stdin 来接受 url 输入并尝试连接到“my-nats”,但它失败了:
public static void Main(string[] args)
{
Console.Write("=>");
string url = Console.ReadLine();
Console.WriteLine($"Connecting to {url}");
try
{
using (IConnection pubConnection = new ConnectionFactory().CreateConnection(url))
{
Console.WriteLine($"Connected to {url}!");
}
}
catch (NATSNoServersException)
{
Console.WriteLine($"No Server found for url,'{url}'!");
return;
}
...
docker run -it testapp
=>my-nats
连接到 my-nats
未找到 url 的服务器,'my-nats'!
如何让我的微服务像 nats-Box 一样连接到我的“my-nats”集群?
解决方法
您是否尝试从本地(微服务)连接到集群中的 nats(在您的机器上运行的 K8s)。 如果是这样,您可能需要对集群中的 nats 进行端口转发,然后使用 http://localhost:4222 作为微服务 nats 连接 url 的 url。