我有一个带有php映像的部署,该映像与6379端口中的redis部署连接。
问题是php应用程序在其自己的pod的主机127.0.0.1中进行连接,但是redis在另一个pod中(并具有其自己的ClusterIP服务)。
我无法更改应用程序代码,因此我想将php pod的6379端口重定向为redis端口上的相同端口。
我该怎么做?
答案 0 :(得分:1)
kubernetes使用socat
从kubectl
进行端口转发,因此,如果他们如此信任它,似乎也可以信任它。
将其放在与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连接主机