![](/img/trans.png)
[英]Unable to access workload at the IP address of the Kubernetes Service
[英]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.