繁体   English   中英

使用一致的IP地址从Kube.netes访问外部服务

[英]Access external service from Kubernetes with consistent IP address

我在 AWS Elastic Kube.netes Service (EKS) 集群中设置了一项服务和一些 pod,该集群访问集群外部托管的 RabbitMQ 消息服务和 PostgreSQL 数据库。 目前,我已经通过 AWS 安全组从所有 IP (0.0.0.0/0) 访问这些服务,因为 kube.netes 在创建每个节点时为其分配了一个 IP。

理想情况下,我想通过一个一致的“外部 Kube.netes IP”将流量从 Kube.netes 路由到这些服务,这样我就可以将它添加到每个外部服务安全组中。 目前,从谷歌搜索我还没有找到这样做的方法,有可能吗?

对于 RabbitMQ,我设置了当前的服务和端点,但我相信这仅用于通过 Kube.netes 集群路由流量,与我的集群的外部面向无关?

kind: Service
metadata:
  name: rabbitmq-service
spec:
  selector:
    app: job-wq-1
  ports:
    - port: 15672
      targetPort: 15672
      name: management-port
    - port: 5672
      targetPort: 5672
      name: data-port
  type: LoadBalancer
---
kind: Endpoints
apiVersion: v1
metadata:
  name: rabbitmq
subsets:
- addresses:
  - ip: 'rabbitmq.server.public.ip'
  ports:
  - port: 15672
    name: 'management-port'
  - port: 5672
    name: 'data-port'

您的意思是传出流量的 IP 吗?

如果您尝试使用 static 外部 IP 创建 LoadBalancer 服务,您可以使用loadBalancerIP字段来使用保留的 IP,例如 AWS Elastic IP。

https://kube.netes.io/docs/concepts/services.networking/service/#type-loadbalancer

是的,这是可能的,但这并不简单。

您需要做的是通过 VPC 网关、NAT 网关或其他一些用作 NAT 的 EC2 实例路由来自集群的出站流量。 然后可以为该实例提供 static IP,然后您可以在目的地将其列入白名单(因此无需使用 0.0.0.0/0)

我们在 GKE 中使用类似的设置来允许我们启动 GKE 集群,在其中运行工作负载,但有一个已知的固定 IP 远程服务器将识别并允许连接。

暂无
暂无

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

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