如何将我的 NATS docker 镜像连接到我的 k8s NATS 集群?

问题描述

我将 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。