首页 文章

Docker Container和Kubernetes Pod之间的通信

提问于
浏览
0

我有3台服务器:1 . kubernetes Master 2. kubernetes Minion1 3. kubernetes Minion2

在kubernetes master上运行的复制控制器(带有http服务),带有4个副本(pods),集群IP为10.254.x.x

群集IP可以通过kubectl命令创建的busybox pod访问 .

现在我已经在kubernetes主服务器上安装了docker

然后使用docker run命令启动容器 . 所以现在我的 Question is: how to communicate between this docker container and kubernetes cluster IP??

实际目标是:docker容器将充当kubernetes集群IP的反向代理

Docker container IP : 172.17.x.x
Kubernetes Pods IP : 172.17.x.x
Kubernetes cluster IP : 10.254.x.x

谢谢 .

2 回答

  • 0

    正如@Grimmy所说,我也认为这是通过使用ingress resource and an ingress controller来实现的 .

    例如,具有nginx和入口控制器的pod可用作Internet和pod之间的负载 balancer 器 .

  • 2

    这里很大程度上取决于您如何配置kubernetes集群 .

    要访问在kube群集中运行的服务/容器/容器,您需要在主服务器上运行kube-proxy,并在群集使用的覆盖网络中运行非kube docker容器 .

    服务ClusterIPs是通过kube-proxy设置iptables规则在节点上实现的,所以,假设你有一个不错的覆盖配置,你应该能够访问它们不仅来自码头 Worker ,而是它自己的主机(可能有一些路由/ nat问题到解决取决于设置) . 另一个问题是服务发现,它在kube中通常通过DNS工作,而不是外部暴露,因此您需要将外部容器/进程指向不同的DNS服务器(或使用不同的服务发现方式,例如查询 . /看kubernetes api) .

    您还可以使用服务通过NodePort公开您的流量,您可以在kube群集或Ingress(以及使用NodePort / LB公开的IngressController)的每个节点的固定端口上访问您的svc .

    也就是说,也许您可以在kubernetes中运行此容器并强制它在主节点上进行调度(查找节点关联和容差)

相关问题