【问题标题】:standalone network endpoint group (NEG) on GKE not workingGKE 上的独立网络端点组 (NEG) 无法正常工作
【发布时间】:2019-09-28 06:20:46
【问题描述】:

我正在 GKE 上运行一个最小的有状态数据库服务。单节点集群。到目前为止,我已经在单个 pod 上将数据库设置为有状态集。该数据库在特定端口上公开了一个管理控制台以及强制数据库端口。我正在尝试做两件事。

  • 通过全局 HTTP(S) 负载平衡器公开管理端口
  • 在 GKE 之外公开数据库端口,以供 Cloud Functions 或 App Engine 应用程序等使用。

我的状态集运行良好,我可以从容器日志中看到数据库已正确启动并正在侦听所需的端口。

我正在尝试使用简单的 ClusterIP 服务设置独立的 NEG(参考:https://cloud.google.com/kubernetes-engine/docs/how-to/standalone-neg)。

集群服务运行良好,我可以看到它使用

kubectl get service service-name

但我没有看到这样的 NEG 设置...以下命令不返回任何内容

$ gcloud compute network-endpoint-groups list
Listed 0 items.

我的 pod 公开了端口 8080,我的服务映射 51000 到 8080,并且我提供了 neg 注释

cloud.google.com/neg: '{"exposed_ports": {"51000":{}}'

我没有看到任何错误,但我也没有看到创建/列出的 NEG。

关于我将如何进行调试的任何建议。

作为后续问题...

  • 在全局负载均衡器上公开 NEG 时,我如何强制执行身份验证? 我可以使用服务帐户角色或 oauth/openid。

  • 我能否使用单个 NEG 公开多个端口?为了 例如如果我想向我的全局负载均衡器公开一个端口并且 另一个本地服务,这可能与单个 NEG 或 我应该使用专用的 ClusterIP 服务公开每个端口吗?

  • 在哪里可以找到 google kubernetes 的文档/规范 注释。我尝试使用 neg 暴露两个端口 以下注释语法。这甚至受支持/有意义吗?

    cloud.google.com/neg: '{"exposed_ports": {"51000":{},"51010":{}}'

提前致谢!

【问题讨论】:

    标签: google-cloud-platform load-balancing google-kubernetes-engine


    【解决方案1】:

    为了创建由网络端点组支持的服务,您需要在 VPC 原生的 GKE 集群上工作:

    创建新集群时,此选项默认禁用,您必须在创建时启用它。您可以在 GKE 中查看您的集群详细信息,确认您的集群是否为 VPC 原生。它应该是这样的:

    VPC-native (alias IP)   Enabled
    

    如果集群不是 VPC Native,您将无法使用此功能,如其限制所述:

    如果您启用了 VPC Native,请确保 pod 具有相同的标签“用途:”和“主题:”,以确保它们是服务的成员:

    kubectl get pods --show-labels
    

    您还可以按照 Kubernetes 文档中的说明创建多端口服务:

    【讨论】:

    • 谢谢。我最终从 gke 文档中弄清楚了这一点,甚至让它工作了。应该更新这张票。我的错误
    • 顺便说一句,我没有名为目的和主题的标签,它仍然有效。
    猜你喜欢
    • 1970-01-01
    • 2022-08-02
    • 2014-10-04
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多