Kubernetes Pod重定向到另一个Pod中的相同端口

时间:2018-11-09 15:20:56

标签: docker service kubernetes

我有一个带有php映像的部署,该映像与6379端口中的redis部署连接。

问题是php应用程序在其自己的pod的主机127.0.0.1中进行连接,但是redis在另一个pod中(并具有其自己的ClusterIP服务)。

我无法更改应用程序代码,因此我想将php pod的6379端口重定向为redis端口上的相同端口。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

kubernetes使用socatkubectl进行端口转发,因此,如果他们如此信任它,似乎也可以信任它。

将其放在与php容器同时运行的第二个容器中,以转发模式运行socat,并希望做到最好:

containers:
- name: my-php
  # etc
- name: redis-hack
  image: my-socat-container-image-or-whatever
  command:
  - socat
  - TCP4-LISTEN:6379,fork
  - TCP4:$(REDIS_SERVICE_HOST):$(REDIS_SERVICE_PORT)
  # assuming, of course, your Redis ClusterIP service is named `redis`; adjust accordingly

由于所有Pod共享相同的网络名称空间,因此第二个容器也将侦听“ 127.0.0.1”

说了这么多,作为对您所处情况的评论,引入这种骇客行为以解决非常非常简单的问题,即不让应用程序硬着头,这是一个糟糕的情况,代码“ 127.0.0.1”作为redis连接主机