GKE 上的独立网络端点组 (NEG) 无法正常工作
standalone network endpoint group (NEG) on GKE not working
我是 运行 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 设置...以下命令 returns 什么都没有
$ gcloud compute network-endpoint-groups list
Listed 0 items.
我的 pod 公开端口 8080 我的服务映射 51000 到 8080 并且我提供了否定注释
cloud.google.com/neg: '{"exposed_ports": {"51000":{}}'
我没有看到任何此类错误,但我也没有看到 NEG created/listed。
关于我将如何调试它的任何建议。
作为后续问题...
当通过全局负载均衡器公开 NEG 时,我该如何强制执行身份验证?
我可以使用服务帐户角色或 oauth/openid.
我可以使用单个 NEG 公开多个端口吗?为了
例如如果我想向我的全局负载均衡器公开一个端口,并且
另一个到本地服务,这是否可以通过单个 NEG 或
我应该使用专用的 ClusterIP 服务公开每个端口吗?
我在哪里可以找到 google kubernetes 的 documentation/specification
注释。我试图使用 neg 上的两个端口
以下注释语法。甚至 supported/meaningful?
cloud.google.com/neg: '{"exposed_ports": {"51000":{},"51010":{}}'
提前致谢!
为了创建由网络端点组支持的服务,您需要在 VPC Native 的 GKE 集群上工作:
创建新集群时,默认情况下禁用此选项,您必须在创建时启用它。您可以在 GKE 中查看您的集群详细信息,确认您的集群是否为 VPC Native。它应该是这样的:
VPC-native (alias IP) Enabled
如果集群不是 VPC Native,您将无法使用此功能,如他们的限制所述:
如果您启用了 VPC Native,请确保 pods 具有相同的标签“目的:”和“主题:”以确保它们是服务的成员:
kubectl get pods --show-labels
您还可以按照 Kubernetes 文档中的描述创建多端口服务:
我是 运行 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 设置...以下命令 returns 什么都没有
$ gcloud compute network-endpoint-groups list
Listed 0 items.
我的 pod 公开端口 8080 我的服务映射 51000 到 8080 并且我提供了否定注释
cloud.google.com/neg: '{"exposed_ports": {"51000":{}}'
我没有看到任何此类错误,但我也没有看到 NEG created/listed。
关于我将如何调试它的任何建议。
作为后续问题...
当通过全局负载均衡器公开 NEG 时,我该如何强制执行身份验证? 我可以使用服务帐户角色或 oauth/openid.
我可以使用单个 NEG 公开多个端口吗?为了 例如如果我想向我的全局负载均衡器公开一个端口,并且 另一个到本地服务,这是否可以通过单个 NEG 或 我应该使用专用的 ClusterIP 服务公开每个端口吗?
我在哪里可以找到 google kubernetes 的 documentation/specification 注释。我试图使用 neg 上的两个端口 以下注释语法。甚至 supported/meaningful?
cloud.google.com/neg: '{"exposed_ports": {"51000":{},"51010":{}}'
提前致谢!
为了创建由网络端点组支持的服务,您需要在 VPC Native 的 GKE 集群上工作:
创建新集群时,默认情况下禁用此选项,您必须在创建时启用它。您可以在 GKE 中查看您的集群详细信息,确认您的集群是否为 VPC Native。它应该是这样的:
VPC-native (alias IP) Enabled
如果集群不是 VPC Native,您将无法使用此功能,如他们的限制所述:
如果您启用了 VPC Native,请确保 pods 具有相同的标签“目的:”和“主题:”以确保它们是服务的成员:
kubectl get pods --show-labels
您还可以按照 Kubernetes 文档中的描述创建多端口服务: