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

标签 kubernetes google-cloud-platform google-kubernetes-engine google-api-java-client google-container-builder

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

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

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

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

    谢谢

    最佳答案

    正如 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 客户端。您需要创建一个客户端来获取实例元数据,我希望它可能是计算客户端库的一部分,或者如果您添加正确的 header (如上所示),您可以发出本地 HTTP 请求,因为您没有需要任何特殊的客户端身份验证/授权才能访问本地元数据。

    关于kubernetes - 如何以编程方式从其中一个集群中获取当前的 GKE 项目 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56348813/

    相关文章:

    google-cloud-platform - 在我的 GCP 项目中创建虚拟机实例时,如何接收自定义电子邮件通知

    kubernetes - 如何在 dnsConfig 中将节点 ip 设置为名称服务器?

    kubernetes - 使用 Knative 自动创建 Ingress 资源

    kubernetes - GKE上另一个Kubernetes集群中Pod的DNS

    java - 如何防止 Cassandra 的数据流读取并行度降低

    google-cloud-platform - 在apache airflow中安装Scrapy会导致INVALID_ARGUMENT

    google-cloud-platform - 扩大网络规范以加快 GCP 计算引擎实例上的网络速度?

    kubernetes - Google Kubernetes Engine 上的 Gitlab 服务器邮件配置

    kubernetes - 无法在GKE上使用BackendConfig

    go - 当 defer func 在 ginkgo 执行时