gpt4 book ai didi

google-cloud-dataflow - 从 Google Dataflow 访问在 GKE 中运行的 HTTP 服务

转载 作者:行者123 更新时间:2023-12-04 15:20:04 24 4
gpt4 key购买 nike

我有一个在 Google Container Engine 集群上运行的 HTTP 服务(在 kubernetes 服务之后)。

我的目标是使用固定名称从在同一个 GCP 项目上运行的 Dataflow 作业访问该服务(与使用 DNS 从 GKE 内部访问服务的方式相同)。任何的想法?

  • 我在 stackoverflow 上阅读的大多数解决方案都依赖于在试图访问该服务的机器上安装 kube-proxy。据我所知,不可能在 Dataflow 创建的每个工作实例上可靠地设置该服务。
  • 一种选择是创建外部平衡器并在公共(public) DNS 中创建 A 记录。虽然它有效,但我宁愿在我的公共(public) DNS 记录中没有指向该服务的条目。
  • 最佳答案

    编辑:
    现在 GKE 支持
    (现称为 Kubernetes 引擎):https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing

    恕我直言,我已经以一种非常顺利的方式实现了这一点。我将尝试简要介绍它是如何工作的:

  • 请记住,当您创建容器集群(或节点池)时,它将由作为默认网络一部分的实例组中的一组 GCE 实例组成。注意:添加特定的 GCE 网络标签,以便您稍后可以仅将这些实例添加到防火墙规则中,以便让负载均衡器检查实例运行状况。
  • 此实例组只是一个常规实例组。
  • 现在,请记住 kubernetes 有一个叫做 NodePort 的东西。 ,这将在所有节点上的此端口上公开服务,即集群中的所有 GCE 实例。这就是我们想要的!
  • 现在我们知道我们在一个实例组中有一组 GCE 实例,然后我们可以将此实例组添加到默认网络中的内部负载均衡器,而无需了解任何有关 kubernetes 内部或 DNS 的信息。
  • 您可以遵循的指南,跳过许多初始步骤:https://cloud.google.com/compute/docs/load-balancing/internal/
  • 请记住,这适用于区域,因此数据流和其他所有内容都必须位于同一区域中。

  • 有关服务,请参阅此规范:
    kind: Service
    apiVersion: v1
    metadata:
    name: name
    labels:
    app: app
    spec:
    selector:
    name: name
    app: app
    tier: backend
    ports:
    - name: health
    protocol: TCP
    enter code here port: 8081
    nodePort: 30081
    - name: api
    protocol: TCP
    port: 8080
    nodePort: 30080
    type: NodePort

    这是使用运行状况检查、转发规则和防火墙设置负载均衡器的代码:
    _region=<THE_REGION>
    _instance_group=<THE_NODE_POOL_INSTANCE_GROUP_NAME>
    #Can be different for your case
    _healtcheck_path=/liveness
    _healtcheck_port=30081
    _healtcheck_name=<THE_HEALTCHECK_NAME>
    _port=30080
    _tags=<TAGS>
    _loadbalancer_name=internal-loadbalancer-$_region
    _loadbalancer_ip=10.240.0.200

    gcloud compute health-checks create http $_healtcheck_name \
    --port $_healtcheck_port \
    --request-path $_healtcheck_path

    gcloud compute backend-services create $_loadbalancer_name \
    --load-balancing-scheme internal \
    --region $_region \
    --health-checks $_healtcheck_name

    gcloud compute backend-services add-backend $_loadbalancer_name \
    --instance-group $_instance_group \
    --instance-group-zone $_region-a \
    --region $_region

    gcloud compute forwarding-rules create $_loadbalancer_name-forwarding-rule \
    --load-balancing-scheme internal \
    --ports $_port \
    --region $_region \
    --backend-service $_loadbalancer_name \
    --address $_loadbalancer_ip
    #Allow google cloud to healthcheck your instance
    gcloud compute firewall-rules create allow-$_healtcheck_name \
    --source-ranges 130.211.0.0/22,35.191.0.0/16 \
    --target-tags $_tags \
    --allow tcp

    关于google-cloud-dataflow - 从 Google Dataflow 访问在 GKE 中运行的 HTTP 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35812076/

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