我想将本地运行的Docker容器连接到Kubernetes集群上运行的服务。为此,我通过保留一些静态IP地址公开了一项服务。
我还将这些IP地址保存在/etc/hosts/
文件中的本地DNS中:
123.123.123.12 host1
456.456.456.45 host2
我想将我的容器链接到该容器,以使所有流量都路由到那些地址,以便集群可以处理它。我正在docker容器中使用链接功能,但无法正常工作。
我想直接使用IP连接吗?我该怎么办?
答案 0 :(得分:1)
无论客户端是否在Docker中,执行此操作都没有区别。但是,如果您拥有service exposed from 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