迁移到 Stackdriver Kubernetes Monitoring

Stackdriver 选项

目前针对 GKE 中的 Stackdriver 支持提供了两个选项。所有 GKE 版本均提供这两个选项,可用于新集群及更新现有集群。

安装 Stackdriver 支持页面说明如何将 GKE 集群更新为 Stackdriver Kubernetes Monitoring。该页面介绍了您在更新 Stackdriver 时会发现哪些不同之处,以及将 Stackdriver Monitoring 和 Stackdriver Logging 与 Stackdriver Kubernetes Monitoring 搭配使用时必须进行哪些更改。

何时需要迁移?

当您开始搭配 Stackdriver Kubernetes Monitoring 使用现有的 Stackdriver 配置时,您需要迁移这些配置。GKE 的未来版本不再支持旧版 Stackdriver,并要求您使用 Stackdriver Kubernetes Monitoring:

  • 现在,您可以通过使用 Stackdriver Kubernetes Monitoring 测试版来开始迁移集群。已批准的所有 GKE 版本中都提供了该测试版,可用于新集群及更新现有集群。

  • 您也可以等待 Stackdriver Kubernetes Monitoring 正式版发布。

有何变化?

Stackdriver Kubernetes Monitoring 使用不同的数据模型来整理其指标、日志和元数据。对于使用 Stackdriver Kubernetes Monitoring 的集群,以下是一些特定的更改:

  • Stackdriver Monitoring 信息中心位于新菜单 资源 > Kubernetes (Beta)。如果您没有任何集群使用 Stackdriver Kubernetes Monitoring,则不会显示此信息中心。

  • 受监控的资源类型名称发生了变化。例如,Kubernetes 节点列在受监控的资源类型 k8s_node(Kubernetes 节点)之下,而不是列在 gce_instance(Compute Engine 虚拟机实例)之下。

  • Kubernetes 指标名称发生了变化。指标类型名称现在以前缀 kubernetes.io/(Stackdriver Kubernetes 指标)开头,而不是以 container.googleapis.com/ 开头。

下表汇总了上述更改:

更改 (旧)旧版 Stackdriver (新)Stackdriver Kubernetes Monitoring
信息中心菜单 资源 > Kubernetes Engine 资源 > Kubernetes (Beta)
指标前缀 container.googleapis.com kubernetes.io
资源类型 gke_container(指标)
container(日志)
gce_instance
(无)
gke_cluster
k8s_container
k8s_container
k8s_node
k8s_pod
k8s_cluster

我需要做什么?

关于 Stackdriver Kubernetes Monitoring 中的数据模型更改以及这些更改对现有 Stackdriver 配置的影响,本部分包含了更多具体信息。

使用迁移状态信息中心

在升级到 Stackdriver Kubernetes Monitoring 的过程中,为了识别必须迁移的许多 Stackdriver 配置,Stackdriver 提供了迁移状态信息中心。

要查看信息中心,请选择包含 Kubernetes 集群的工作区以更新为 Stackdriver Kubernetes Monitoring。在项目选择下拉菜单中选择工作区设置 > Kubernetes 迁移状态

访问 Kubernetes 迁移状态信息中心

以下示例信息中心显示没有待办事项:

迁移信息中心

资源类型变化

Stackdriver Kubernetes Monitoring 具有新的资源类型名称,新的资源类型显示名称以及用于识别特定资源的新标签名称。下表列出了这些变化。

资源类型变化
(旧)旧版 Stackdriver 资源类型 (新)Stackdriver Kubernetes Monitoring 资源类型
表脚注
1 在仅用于监控的新资源类型中,metadata.system_labels 中的 instance_id 会变成 node_name
2 zone 是指此容器或实例的位置。location 是指集群主节点的位置。
3 在用于日志记录的 k8s_container 资源类型中未提供 metadata.system_labels.node_name。您无法按节点名称搜索日志。
4 gce_instance 资源类型可以表示 Kubernetes 节点以及非 Kubernetes 虚拟机实例。当升级到 Stackdriver Kubernetes Monitoring 时,涉及节点的使用场景会变成使用新资源类型 k8s_node,包括使用下列名称的节点级别日志:kubeletdockerkube-proxystartupscriptnode-problem-detector
5 k8s_podk8s_cluster 节点可能包含旧版 Stackdriver 支持中不存在的日志。
仅 Monitoring:
gke_container (GKE 容器)

标签:
  cluster_name
  container_name
  instance_id1
  namespace_id
  pod_id
  project_id
  zone2

仅 Logging:
container (GKE 容器)

标签:
  cluster_name
  container_name
  instance_id1
  namespace_id
  pod_id
  project_id
  zone2

Monitoring 和 Logging:
k8s_container (Kubernetes 容器)

标签:
  cluster_name
  container_name
  metadata.system_labels.node_name3
  namespace_name
  pod_name
  project_id
  location2

仅 Logging
gce_instance (Compute Engine 虚拟机实例)4

标签
  cluster_name
  instance_id
  project_id
  zone2
Monitoring 和 Logging
k8s_node4(Kubernetes 节点)

标签
  cluster_name
  node_name
  project_id
  location2
 
(无)
Monitoring 和 Logging:
k8s_pod5 (Kubernetes Pod)

标签
  cluster_name
  namespace_name
  node_name
  project_id
  location2

仅 Logging
gke_cluster (GKE_cluster)

标签
  cluster_name
  project_id
  location

Monitoring 和 Logging:
k8s_cluster5((Kubernetes 集群)

标签
  cluster_name
  project_id
  location

指标名称变化

下表展示了一些不同指标名称的示例。每次使用指标时,您必须使用名称以 kubernetes.io/ 开头的新指标来替换名称以 container.googleapis.com/ 开头的指标。除了有不同的新前缀,新指标名称还可能在其他方面有所不同。请参阅 kubernetes.io (Stackdriver Kubernetes 指标)中所列出的新指标。

指标名称变化
(旧)旧版 Stackdriver 指标 (新)Stackdriver Kubernetes Monitoring 指标
旧版 GKE 指标
container.googleapis.com/

示例
  .../container/cpu/utilization
  .../container/uptime
  .../container/memory/bytes_total
Stackdriver Kubernetes 指标
kubernetes.io/

示例
  .../container/cpu/request_utilization
  .../container/uptime
  .../node/memory/total_bytes
  .../node/cpu/total_cores

资源组变化

如果您定义了自己的资源组,并使用了前面的资源类型变化表中显示的任何旧版 Stackdriver 资源类型,或前面的指标名称变化表中显示的任何旧版 Stackdriver 指标,请将那些类型和指标更改为相应的 Stackdriver Kubernetes Monitoring 资源类型和指标。如果您的资源组包含自定义图表,您可能需要更改它们。

提示:检查更新后的资源组包含的资源数量是否与升级之前相同。如果资源太少,可能表示您漏掉了一些变更。

自定义图表和信息中心变化

如果您定义了自己的自定义图表和信息中心,并使用了前面的资源类型变化表中显示的任何旧版 Stackdriver 资源类型,或前面的指标名称变化表中显示的任何旧版 Stackdriver 指标,请将那些类型和指标更改为相应的 Stackdriver Kubernetes Monitoring 类型和指标。

提示:检查更新后的图表是否接收到了时间戳为更新后的时间的数据。如果缺少数据,可能表示您未能正确更改某些指标。

对于自定义图表和信息中心,您可以查看 Kubernetes 迁移状态信息中心获得帮助:

  1. 在 Stackdriver Monitoring 页面顶部,选择包含 Kubernetes 集群的工作区以更新为 Stackdriver Kubernetes Monitoring。

  2. 选择工作区设置 > Kubernetes 迁移状态

    访问 Kubernetes 迁移状态信息中心

提醒和正常运行时间政策变化

如果您定义了自己的提醒政策正常运行时间检查,并使用了前面的资源类型变化表中显示的任何旧版 Stackdriver 资源类型,或前面的指标名称变化表中显示的任何旧版 Stackdriver 指标,请将那些类型和指标更改为相应的 Stackdriver Kubernetes Monitoring 类型和指标。

升级提醒政策和正常运行时间检查可能是要执行和验证的更改中最为困难的。您是在升级集群之前还是之后更改政策配置?更新集群后旧政策会失败,而在更新集群之前新政策会失败。

请考虑保持现有政策不变并使用更新后的更改来创建新政策,而不是就在现有政策上进行更改。这样做可以更轻松地在更新过程的不同时间里对可能会失败的政策和不会失败的政策进行跟踪。

以下是一些其他提示:

  • 检查您的政策,并预估更新后的集群在进入“稳定状态”之前需要运行多长时间来积累足够的数据。

  • 了解您的政策或各个指标在更新之前的执行情况,以便在更新后对其行为进行比较。

Logging 查询

如果您使用查询在 Stackdriver Logging 中查找并过滤您的日志,并使用了前面的资源类型变化表中显示的任何旧版 Stackdriver 资源类型,请将那些类型更改为相应的 Stackdriver Kubernetes Monitoring 类型。

基于日志的指标

如果您定义了自己的基于日志的指标,并使用了前面的指标名称变化资源类型变化表中显示的旧版 Stackdriver 指标或资源类型,请将那些指标和资源类型更改为相应的 Stackdriver Kubernetes Monitoring 指标和资源类型。

提示:如果在更新到 Stackdriver Kubernetes Monitoring 后没有看到任何基于日志的指标的示例,则表示您可能仍在使用旧版 Stackdriver 指标或资源类型。

记录导出和排除项

如果您导出排除任何日志时,导出或排除过滤条件使用了前面的资源类型变化表中显示的旧版 Stackdriver 资源类型,请将导出和排除过滤条件更改为使用相应的 Stackdriver Kubernetes Monitoring 资源类型。

提示:在更新到 Stackdriver Kubernetes Monitoring 之前,请记下您从 GCP 项目中导出或排除的日志的大致数目,以便核实您是否仍然获得了相近的数目。

日志条目内容的变化

更新到 Stackdriver Kubernetes Monitoring 时,您可能会发现日志条目中的特定信息已移至不同名称的字段。此信息可能会出现在基于日志的指标、日志接收器和日志排除项所使用的日志查询中。

以下日志条目变化表中列出了新字段和标签。简要总结如下:

  • logName 字段可能会更改。Stackdriver Kubernetes Monitoring 日志条目的日志名称中会使用 stdoutstderr,而旧版 Stackdriver 使用了更多种类的名称,包括容器名称。容器名称仍可用作资源标签。
  • 检查日志条目中的 labels 字段。此字段可能包含以前位于 metadata 日志条目字段中的信息。
  • 检查日志条目中的 resource.labels 字段。新资源类型具有额外的标签值。
日志条目变化
(旧)旧版 Stackdriver 日志条目 (新)Stackdriver Kubernetes Monitoring 日志条目
表脚注
1 资源标签标识了产生指标的特定资源,例如特定集群和节点。
2 labels 字段出现在 Stackdriver Kubernetes Monitoring 的新日志条目中,并且偶尔会出现在一些旧版 Stackdriver 日志条目中。在 Stackdriver Kubernetes Monitoring 中,它用于保存以前位于 metadata 日志条目字段中的一些信息。
3 虽然某些信息确实会出现在 Stackdriver Kubernetes Monitoring 测试版,但正式版的日志条目不使用 systemLabels 字段。从 1.12.6 版开始,此信息将移动到日志条目的 labels 字段。
4 虽然某些信息确实会出现在 Stackdriver Kubernetes Monitoring 测试版,但正式版的日志条目不使用 userLabels 字段。从 1.12.6 版开始,此信息将移动到日志条目的 labels 字段。
日志条目资源
resource.labels(资源标签1
日志条目资源
resource.labels(资源标签1
日志条目元数据
labels(日志条目标签2

标签(示例)
  compute.googleapis.com/resource_name:
    "fluentd-gcp-v3.2.0-d4d9p"

  container.googleapis.com/namespace_name:
    "kube-system"

  container.googleapis.com/pod_name:
    "fluentd-gcp-scaler-8b674f786-d4pq2"

  container.googleapis.com/stream:
    "stdout"
日志条目元数据
labels

(无)
日志条目资源元数据
metadata.systemLabels3(系统标签)

(无)
日志条目元数据
metadata.userLabels4(用户标签)

日志位置的变化

在 Stackdriver Logging 中,日志将按照生成它们的资源类型进行存储。由于这些类型在 Stackdriver Kubernetes Monitoring 中已更改,因此请务必在 Kubernetes Container 等新资源类型中查找您的日志,而不要在 GKE Container 等旧版 Stackdriver 类型中查找。

后续步骤

  • 要了解新的 Stackdriver Kubernetes Monitoring 信息中心,请参阅观察您的系统
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Stackdriver Monitoring
需要帮助?请访问我们的支持页面