我已经在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'
2条答案
按热度按时间zdwk9cvp1#
您指的是传出流量的IP吗?
如果您尝试使用静态外部IP创建LoadBalancer服务,则可以使用
loadBalancerIP
字段来使用保留IP,例如AWS弹性IP。https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
3zwtqj6y2#
是 的 , 这 是 可能 的 , 但 它 并 不 简单 。
您 需要 做 的 是 通过 VPC 网关 、 NAT 网关 或 其他 一些 用作 NAT 的 EC2 示例 从 集群 路由 出站 流量 。 然后 可以 为 该 示例 指定 一 个 静态 IP , 然后 您 可以 将 该 IP 列入 目的 地 的 白 名单 ( 因此 无需 使用 0.0.0.0/0 )
我们 在 GKE 中 使用 了 类似 的 设置 , 以 允许 我们 启动 GKE 集群 , 在 其中 运行 工作 负载 , 但 具有 远程 服务 器 将 识别 并 允许 连接 的 已知 固定 IP 。