gpt4 book ai didi

google-cloud-platform - 如何从同一项目中的另一个 Kubernetes 集群调用 Kubernetes 集群公开的服务

转载 作者:行者123 更新时间:2023-12-03 13:33:25 25 4
gpt4 key购买 nike

我有两个服务,集群 K1 中的 S1 和集群 K2 中的 S2。他们有不同的硬件要求。服务 S1 需要与 S2 对话。

出于安全原因,我不想公开 S2 的公共(public) IP。在具有网络负载平衡的 K2 集群的计算实例上使用 NodePorts 会降低灵 active ,因为每次在 K2 中添加/删除节点时,我都必须在目标池中添加/删除 K2 的计算实例。

是否有类似“服务选择器”的自动更新目标池?如果没有,对于这个用例还有其他更好的方法吗?

最佳答案

我可以想到几种方法来跨连接到同一个 GCP 专用网络的多个集群访问服务:

  • 所有 k2 服务的堡垒路由到 k2:

    查找 SERVICE_CLUSTER_IP_RANGE对于 k2 集群。在 GKE 上,它将是 servicesIpv4Cidr集群输出中的字段描述:
    $ gcloud beta container clusters describe k2
    ...
    servicesIpv4Cidr: 10.143.240.0/20
    ...

    添加一个高级路由规则以获取发往该范围的流量并将其路由到 k2 中的节点:
    $ gcloud compute routes create --destination-range 10.143.240.0/20 --next-hop-instance k2-node-0

    这将导致 k2-node-0代理来自私有(private)网络的任何 k2 服务的请求。这有给 k2-node-0 的明显缺点。额外的工作,但很简单。
  • 在 k1 的所有节点上安装 k2 的 kube-proxy。

    看一下 k2 中任意节点上当前运行的 kube-proxy:
    $ ps aux | grep kube-proxy
    ... /usr/local/bin/kube-proxy --master=https://k2-master-ip --kubeconfig=/var/lib/kube-proxy/kubeconfig --v=2

    将 k2 的 kubeconfig 文件复制到 k1 中的每个节点(例如 /var/lib/kube-proxy/kubeconfig-v2 )并在每个节点上启动第二个 kube-proxy:
    $ /usr/local/bin/kube-proxy --master=https://k2-master-ip --kubeconfig=/var/lib/kube-proxy/kubeconfig-k2 --healthz-port=10247

    现在,k1 中的每个节点都在本地处理到 k2 的代理。设置起来有点困难,但具有更好的缩放属性。

  • 如您所见,这两种解决方案都不是那么优雅。正在讨论这种类型的设置应该如何在 Kubernetes 中理想地工作。你可以看看 Cluster Federation提案文档(特别是 Cross Cluster Service Discovery 部分),并通过打开问题/发送 PR 来加入讨论。

    关于google-cloud-platform - 如何从同一项目中的另一个 Kubernetes 集群调用 Kubernetes 集群公开的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31664060/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com