从 kubernetes 访问外部自定义 IP 端口

时间:2021-04-09 06:04:14

标签: kubernetes microservices google-kubernetes-engine kubernetes-ingress

我有一个微服务架构,我的一个服务需要访问一些特定的 IP (3.*.*.*:63815) 才能连接 WebSocket。因此,从提供商方面来看,我已将入口外部 IP 列入白名单。

但是当我尝试连接时,连接没有建立。

我是否需要更新任何防火墙规则或通过 Ingress 在内部添加自定义 IP/端口访问?

对此的任何帮助将不胜感激!

编辑:

  1. 为此我使用 GCP Cloud
  2. 我需要从 POD 连接外部 FIXapi 客户端

1 个答案:

答案 0 :(得分:0)

我需要同意用户@dishant makwana 的评论并给予更多关注:

<块引用>

很可能您需要将运行 Pod 的节点的 IP 地址列入白名单

假设您想从 GKE Pod 向位于 project/organization/GCP 之外的服务发送请求,您应该允许来自您的 GCP 资源的“本地”位置的流量。

您正在创建的流量的源 IP 可以是:

  • GKE 节点s 外部 IP 地址es - 如果集群未创建为私有
  • Cloud NAT IP 地址 - 如果您已为私有集群配置了 Cloud NAT
<块引用>

附注!

如果您尚未为您的私有集群创建 Cloud NAT,您将无法访问外部资源。


回答以下问题:

<块引用>

我是否需要更新任何防火墙规则或通过 Ingress 在内部添加自定义 IP/端口访问?

如果我们谈论的是 GKE/GCP 环境,那么,不。您不需要从 GCP 端修改任何防火墙规则(假设您没有以任何方式重新配置防火墙规则)。

Ingress/Kubernetes 中的

GKE 资源(不是规则)用于将您自己的应用程序暴露给外部访问(用于入站流量,而不是出站流量)。

引用官方文档:

<块引用>

隐含规则

每个 VPC 网络都有两个隐含的防火墙规则。这些规则存在,但未显示在 Cloud Console 中:

隐含的允许出口规则。操作为 allow、目的地为 0.0.0.0/0 且优先级尽可能低 (65535) 的出口规则允许任何实例将流量发送到任何目的地,但流量 blocked 除外由谷歌云。更高优先级的防火墙规则可能会限制出站访问。如果没有其他防火墙规则拒绝出站流量,并且实例具有外部 IP 地址或使用 Cloud NAT 实例,则允许 Internet 访问。有关详细信息,请参阅 Internet access requirements

隐含拒绝入口规则。操作为 deny、来源为 0.0.0.0/0 且优先级尽可能低 (65535) 的入口规则通过阻止传入连接来保护所有实例。更高优先级的规则可能允许传入访问。默认网络包含一些 additional rules 覆盖此网络,允许某些类型的传入连接。

-- Cloud.google.com: VPC: Docs: Firewall: Default firewall rules


其他资源: