使用一致的IP地址从Kubernetes访问外部服务

juud5qan  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(2)|浏览(202)

我已经在AWS Elastic Kubernetes Service(EKS)集群中设置了一个服务和一些pod,它们访问RabbitMQ消息服务和集群外部托管的PostgreSQL数据库。目前,我已经通过AWS安全组打开了从所有IP(0.0.0.0/0)访问这些服务的权限,因为Kubernetes在创建每个节点时都会为其分配一个IP。
理想情况下,我希望通过一个一致的“外部Kubernetes IP”将流量从Kubernetes路由到这些服务,这样我就可以将其添加到每个外部服务安全组中。目前,我在谷歌上搜索了一下,还没有找到这样做的方法,可能吗?
对于RabbitMQ,我已经设置了当前的服务和端点,但我认为这仅用于通过Kubernetes集群路由流量,而与集群的面向外部的一端无关。

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'
zdwk9cvp

zdwk9cvp1#

您指的是传出流量的IP吗?
如果您尝试使用静态外部IP创建LoadBalancer服务,则可以使用loadBalancerIP字段来使用保留IP,例如AWS弹性IP。
https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer

3zwtqj6y

3zwtqj6y2#

是 的 , 这 是 可能 的 , 但 它 并 不 简单 。
您 需要 做 的 是 通过 VPC 网关 、 NAT 网关 或 其他 一些 用作 NAT 的 EC2 示例 从 集群 路由 出站 流量 。 然后 可以 为 该 示例 指定 一 个 静态 IP , 然后 您 可以 将 该 IP 列入 目的 地 的 白 名单 ( 因此 无需 使用 0.0.0.0/0 )
我们 在 GKE 中 使用 了 类似 的 设置 , 以 允许 我们 启动 GKE 集群 , 在 其中 运行 工作 负载 , 但 具有 远程 服务 器 将 识别 并 允许 连接 的 已知 固定 IP 。

相关问题