【问题标题】:How to put in communication two clusters in Kubernetes如何在 Kubernetes 中将两个集群进行通信
【发布时间】:2018-05-25 06:29:24
【问题描述】:

我有这样的情况:

  • 网络机器集群
  • 数据库机器和其他服务集群

问题是如何让 2 个集群进行通信,以便在 Web 机器的 /etc/hosts 中使用一些主机名。

为了保护您的数据,创建入口服务以使数据库从外部可见是否安全? 我尝试使用 nodePort 服务(因此使用内部 IP 地址),但我无法在不同集群之间建立联系 db-web

目前我的临时解决方案是:

a) 使用以下命令定义公共静态 ip:gcloud compute addresses create my-public-static-ip --global

b) 为我的数据库服务使用入口配置,其中我使用以下选项设置静态 IP:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: my-public-static-ip 

c) 在我的 daemonset.yaml 中我定义了一个 hostAliases:

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: my-daemonset

spec:
  updateStrategy:
    type: RollingUpdate

  template:            
    spec:
      nodeSelector:
        app: frontend-node

      terminationGracePeriodSeconds: 30

      hostAliases:
      - ip: <public_ip_addr>
        hostnames:
        - "my-db-service"

它正在工作。但我不太相信这个解决方案在现场环境中是最好的或正确的

【问题讨论】:

    标签: kubernetes google-cloud-platform docker-ingress


    【解决方案1】:

    您可以在第一个集群中使用 NodePort 或 LoadBalancer 公开您的数据库服务,然后在第二个集群中创建指向 ip-endpoint 的服务。

    第二个集群上的服务可能如下所示:

    apiVersion: v1
    metadata:
      name: pg-database
    spec:
      ports:
      - protocol: TCP
        port: 5432
        targetPort: 5432
    
    ---
    
    kind: Endpoints
    apiVersion: v1
    metadata:
      name: pg-database
    subsets:
      - addresses:
          - ip: <IP address of load balancer or node>
        ports:
          - port: 5432
    

    【讨论】:

      【解决方案2】:

      这是一个很好的阅读和如何做到这一点的例子,即使集群将在不同的项目中。 https://github.com/GoogleCloudPlatform/gke-networking-demos/tree/master/gke-to-gke-peering (这同样适用于其他云或像 kops 而不是 GKE 的自我管理集群

      使用 istios 多集群功能也是有效的,但它是您在集群中安装的额外且复杂的组件,可能根本不需要。

      【讨论】:

        【解决方案3】:

        在我看来,我认为让 2 个不同的 Kubernetes 集群(GKE-Google Kubernetes Engine)相互通信的最佳方法是使用 Istio - 开放平台来连接、管理和保护微服务。看看以下链接:-https://istio.io/v1.3/docs/examples/multicluster/gke/。这很简单,还想提一下,Istio 也应该很适合 Amazon Elastic Container、Azure Kubernetes Service 等实现。

        【讨论】:

          猜你喜欢
          • 2019-02-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-14
          • 2020-05-24
          • 1970-01-01
          • 1970-01-01
          • 2019-12-07
          相关资源
          最近更新 更多