docker - 本地 Docker 连接到 Kubernetes 集群
问题描述
我想将本地运行的 docker 容器连接到 Kubernetes 集群上运行的服务。为此,我通过保留一些静态 IP 地址公开了一项服务。
我还将这些 IP 地址保存在本地 DNS 的/etc/hosts/
文件中:
123.123.123.12 host1
456.456.456.45 host2
我想将我的容器链接到该容器,以便所有流量都路由到这些地址,以便集群可以处理它。我正在使用 docker 容器中的链接功能,但它不起作用。
我想直接使用IP连接?我该怎么做?
解决方案
如果客户端在或不在 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
推荐阅读
- php - 将数组推入多维数组(php)
- twitter-bootstrap - Twitter Bootstrap Table reOrder Columns 未保持顺序
- java - 我想将私钥存储在我的 java 项目中
- vb.net - 为什么单击计算按钮后我的TextBox 4,5,6变为0?
- java - 如何在Java中将用户输入保存为字符串?
- julia - 计算非常大 N 的谐波级数(任意精度问题)
- ios - 如何在iOS上创建中间有圆圈的底栏
- javascript - 我无法访问所有图表数组键
- java - 如何在 Eclipse RCP 中集成 JRViewer
- google-app-engine - 如何在不写入文件系统的情况下从 Google 存储桶恢复 TensorFlow 模型?