簡體   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