【问题标题】:Is there a way to differentiate GCE Instance vs GKE Instance while listing GCP Instances有没有办法在列出 GCP 实例时区分 GCE 实例和 GKE 实例
【发布时间】:2021-09-03 12:11:42
【问题描述】:

当使用 API 调用在 GCP 中列出 VM 实例时,该调用返回 GCP 中可用的所有实例,包括 GCE 实例和 GKE 实例。如何区分 GCE Instance 和 GKE Instance?

【问题讨论】:

    标签: google-cloud-platform google-compute-engine google-kubernetes-engine


    【解决方案1】:

    GKE 创建的节点有一个特殊的标签goog-gke-node

    您可以使用 API call 和过滤器过滤它们

    GET "https://compute.googleapis.com/compute/v1/projects/<projectID>/zones/<zone>/instances?filter=(labels.goog-gke-node%3D%22%22)"
    

    【讨论】:

      【解决方案2】:

      运行以下命令应列出来自计算引擎和 GKE 的所有实例。

      gcloud compute instances list
      

      看起来从 GKE 创建的实例将采用以下格式 gke-[nameofcluster]-........ 。这是区分名称的一种方式。

      现在,如果您出于某种原因在创建 Compute Engine 虚拟机时遵循了相同的格式,您可以只描述一个虚拟机,而那些参考 gke 一词的人会告诉您它是从 GKE 创建的

      gcloud compute instances describe gke-nameofcluster-xxxxxx-xxxxxxx | grep gke
      

      您将看到 30 多个与标签和托管组等相关的 gke 引用。您将在看到它时知道它。

      【讨论】:

        【解决方案3】:
        • 当使用instances.aggregatedList 方法检索项目中的GCE 实例列表时,有一个名为filterQuery parameter 用于过滤响应中列出的资源。所以,我们可以利用这个参数来只列出 GKE 实例或任何 GCE 实例。

        • 例如: 标签 “goog-gke-node”: ”” 是唯一资源,默认情况下是 GKE 实例元数据的一部分,将其用作过滤以仅列出 GKE 实例。为此,我们可以使用字符串 labels.goog-gke-node = "" 作为 API 调用中过滤器参数的值。参考 API explorer here,它具有预先填充的过滤器参数值,在将 project's 值替换为项目 ID 后执行时,将仅列出 GKE 实例。同样,我们也可以利用一组 GCE 实例独有的其他资源。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-04
          • 2018-10-03
          • 2021-07-07
          • 2017-11-26
          • 1970-01-01
          • 1970-01-01
          • 2017-08-07
          • 2021-11-16
          相关资源
          最近更新 更多