向外部服务器请求时如何在Kubernetes容器中代理IP地址

问题描述

我正在尝试向外部服务器发出GET请求。但是出于安全目的,外部服务器需要我们的IP地址。

现在的问题是我正在具有三个节点的Kubernetes的pod中运行我的应用程序。 当我发送请求时,它使用kubernetes节点之一的IP地址。 我可以将静态IP地址添加到所有节点。但是据我了解,最佳实践是仅将网关(入口)IP地址发布给外界。其他所有内容都应该隐藏。

所以我试图像这样代理我的axios请求:

    <div className="links-nav">
        <NavLink className="item" activeClassName="active" to="/dashboard">
              <img
                src="/images/svgs/dashboard.svg"
                className="home"
                alt="home"
              />
              <span
                className="nav-content"
                onClick={(event) => this.navLinks(event)}
              >
                Dashboard
              </span>
            </NavLink>
       </div>   
        
   .links-nav .active {
      font-style: normal;
      font-weight: 600;
      font-size: 18px;
      color: #000000;
    }
.link-nav .home .active {
  background :#0000FF

但是请求仍然返回错误,表明不允许使用IP。它返回了我的POD所在的kubernetes节点的IP地址。

解决方法

我不确定,您是否能够以某种方式通过入口传递流量。

我们也有同样的问题。我们需要从特定的IP地址向第三方服务器发送请求。

但是我们解决了一些不同,我们只是创建了一个带有静态IP的新小型服务器,并在其中安装了Squid代理服务器,并将我们的应用程序配置为使用Squid服务器作为HTTP转发代理。

,

乌贼具有许多功能,而IMO对于这样一个简单的用例却显得肿。我建议使用更轻便的东西,例如tinyproxy(docker映像here)。因此,您可以做的就是使用该图像创建一个Deployment,并使用nodeSelector将其固定到一个特定节点(具有第三方API允许的IP的那个节点),然后创建一个Service指向它,并在您的请求中将其用作代理。但是,这种方法有一个缺点-您刚刚在基础架构中添加了(另一个)单点故障。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...