首页 > 解决方案 > 本地 Docker 连接到 Kubernetes 集群

问题描述

我想将本地运行的 docker 容器连接到 Kubernetes 集群上运行的服务。为此,我通过保留一些静态 IP 地址公开了一项服务。

我还将这些 IP 地址保存在本地 DNS 的/etc/hosts/文件中:

123.123.123.12 host1
456.456.456.45 host2 

我想将我的容器链接到该容器,以便所有流量都路由到这些地址,以便集群可以处理它。我正在使用 docker 容器中的链接功能,但它不起作用。

我想直接使用IP连接?我该怎么做?

标签: dockerkubernetes

解决方案


如果客户端在或不在 Docker 中,这样做没有区别。但是,您从 Kubernetes 公开了服务,您可以从运行在外部主机上的进程或从运行在该主机上的 Docker 容器中的进程与它建立相同的连接。

比如说,就像 Kubernetes 文档中的示例一样,您正在运行一个 NodePort 服务,该服务可在集群中每个节点上的端口 31496 上访问,并且您正尝试从集群外部连接到它。也许就像问题 123.123.123.12 是集群中的某个节点一样。一个典型的设置是从环境变量(JavaScript process.env.THE_SERVICE_URL; Ruby ENV['THE_SERVICE_URL']; Python os.environ['THE_SERVICE_URL']; ...)中获取服务的位置。

在开发时,您可以在本地 shell 中设置该变量:

export THE_SERVICE_URL=http://123.123.123.12:31496
cd here && ./kubernetes_client_script.py

当你去部署你的应用程序时,你可以设置相同的环境变量:

docker run -e THE_SERVICE_URL=http://123.123.123.12:31496 me:k8s-client

推荐阅读