如何以编程方式从其中一个集群中获取当前的 GKE 项目 ID?

Posted

技术标签:

【中文标题】如何以编程方式从其中一个集群中获取当前的 GKE 项目 ID?【英文标题】:How to get programmatically the current GKE project id from one of its clusters? 【发布时间】:2019-10-14 08:55:54 【问题描述】:

我想通过 Java 客户端或 GCloud API 本身从其中一个集群中获取当前 GKE 项目 ID。

我正在特定 Google Cloud 项目的 GKE 集群中运行 java 容器 我用适当的ClusterManagerSettings 初始化ClusterManagerClient

-> 是否可以使用此客户端获取此特定项目 ID?

(我希望每个 GKE 集群中都有一个全局上下文,我们可以在其中知道我们正在运行的当前项目)。

谢谢

【问题讨论】:

此信息存储在元数据中:cloud.google.com/compute/docs/storing-retrieving-metadata 但是,实际答案取决于您的设置:cloud.google.com/kubernetes-engine/docs/how-to/… 非常感谢! 【参考方案1】:

正如 John Hanley 在上面的评论中提到的,您可以使用集群中节点上的实例元数据来确定该节点所属的项目。查看它的最简单方法是从 shell(在节点上或在容器中)使用 curl。

如果你想要项目名称,可以在:

curl "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google"

如果你想要项目编号,可以在以下位置看到:

curl "http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id" -H "Metadata-Flavor: Google"

这不是容器 API 表面的一部分,因此 ClusterManagerClient 不是要使用的正确 API 客户端。您需要创建一个客户端来获取实例元数据,我希望它可能是计算客户端库的一部分,或者如果您添加正确的标头(如上所示),您可以只发出本地 HTTP 请求,因为您没有需要任何特殊的客户端身份验证/授权来访问本地元数据。

【讨论】:

非常感谢,非常感谢!

以上是关于如何以编程方式从其中一个集群中获取当前的 GKE 项目 ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用新 API 以编程方式获取 Hadoop 集群中所有正在运行的作业?

如何建立从GAE(具有公共访问权限)到私有GKE集群的安全连接。

以编程方式检查 redshift 集群状态

对于每个环境,我们是不是需要单独的 GKE 集群?

如何在 Spring 中以编程方式获取当前的活动/默认环境配置文件?

如何在 Spring 中以编程方式获取当前的活动/默认环境配置文件?