繁体   English   中英

在特定内部 IP 上运行 GKE pod

[英]Running GKE pods on a specific internal IP

我们在谷歌云上运行一个私有的 Kube.netes 集群。 我们对 Kube.netes 知之甚少,因此正在努力了解如何解决这个问题。

特定的内部 IP 地址 (10.*.0.0) 已被列入白名单,以允许此 IP 地址上的集群访问敏感的内部服务(访问 MySQL 实例)。 这很好用,但现在我们想从一个集群迁移到多个集群,但我们需要所有这些集群能够通过这个列入白名单的 IP 地址路由流量。 集群和白名单地址 IP 共享同一个 VPC.network。

我们应该如何处理这个问题? 我们研究了创建 ClusterIP 服务,但不允许指定内部 IP 地址。 负载均衡器也不是我们所需要的,因为它们希望处理外部流量,而我们只对内部流量感兴趣。

由于 NAT 不允许您在同一个 su.net 中进出 IP 地址,并且 GKE 不允许您为另一个节点池使用单独的 su.net,因此此任务的唯一解决方案是 SQL 或TCP 代理安装在单独的虚拟机上,该虚拟机specific internal IP address (10.*.0.0) on its.network interface

您的应用程序实例将连接到特定端口上的该虚拟机,代理软件会启动一个从它自己的 IP 地址到您的 MySQL 实例的新连接。 所有响应都将转发回请求的发起者。

请查看以下使用 Nginx 实现 TCP 代理的示例(尽管该示例与 MS SQL 相关,但它应该适用于 MySQL 以及不同的端口:3306,您可能不需要 UDP 相关部分):

stream {
    upstream dbtcp {
        server db1:1433;
    }

    upstream dbudp {
        server db1:1434;
    }

    server {
        listen 1433;
        proxy_pass dbtcp;
        proxy_connect_timeout 1s; # detect failure quickly
    }

    server {
        listen 1434 udp;
        proxy_pass dbudp;
        proxy_connect_timeout 1s; # detect failure quickly
    }
}

更复杂但也更灵活和功能丰富的方法是使用 SQL 感知代理,如ProxySQL这是一个开源项目,在 GPL v3 许可下可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM