Docker容器和Kubernetes Pod之间的通信

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

在kubernetes master上运行具有4个副本(pod)的复制控制器(使用http服务),集群IP为10.254.xx

群集IP可以通过由kubectl命令创build的busybox吊舱访问。

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

然后使用docker run命令启动一个容器。 所以现在我的问题是:如何沟通这个docker集装箱和kubernetes集群IP?

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

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

谢谢。

正如@Grimmy所说,我也认为这是通过使用一个入口资源和一个入口控制器来完成的 。

例如,带有nginx和入口控制器的pod可以用作Internet和您的pod之间的负载均衡器。

这里很大程度上取决于你如何configuration你的kubernetes集群。

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

服务集群IP是通过kube-proxy设置iptables规则在节点上实现的,所以,假设你有一个体面的覆盖configuration,你应该能够访问他们不仅从docker,但它自己的主机(可能有一些路由/ NAT问题根据设置进行处理)。 另一个问题是服务发现,在kube中通常通过DNS工作,而不是暴露在外部,因此您需要将您的外部容器/进程指向不同的DNS服务器(或者使用不同的服务发现方法,例如查询/看kubernetes api)。

您还可以使用服务使用NodePort公开您的stream量,您可以在kube cluster或Ingress中的每个节点的固定端口(以及使用NodePort / LB公开的IngressController)到达您的svc。

也就是说,也许你可以在kubernetes中运行这个容器,并强制它在主节点上进行调度(lookup node affinity和tolerations)