迁移到 Kubernetes Engine Operations

Google Kubernetes Engine (GKE) 中的监控和日志记录支持有两个选项。所有 GKE 版本均提供这两个选项,可用于新集群及更新现有集群。

本页面介绍了这两个选项之间的区别,以及从旧版 Logging 和 Monitoring 迁移到 Kubernetes Engine Operations 时必须进行哪些更改。

何时需要迁移?

您可以随时将现有 Cloud Monitoring 和 Cloud Logging 配置从旧版 Logging 和 Monitoring 迁移到 Kubernetes Engine Operations。但是请注意,GKE 的未来版本可能会停止对旧版 Logging 和 Monitoring 的支持。如果您希望继续使用 Cloud Monitoring 和 Cloud Logging 支持,则您必须在旧版 Logging 和 Monitoring 的支持被停止前迁移到 Kubernetes Engine Operations。

下表总结了即将发布的 GKE 版本及其支持选项:

GKE 版本 旧版 Logging 和 Monitoring Kubernetes Engine Operations
1.10 – 1.12.5 默认 选择启用(测试版)
1.12.7 默认 可选
1.13 默认 可选
1.14 可选 默认
1.15 不可用 默认

有何变化?

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

  • 导航发生了变化:Cloud Monitoring 信息中心已更名为 Kubernetes Engine New。如果您没有使用 Kubernetes Engine Operations 的集群,则不会显示此信息中心。

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

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

下表汇总了上述更改:

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

我需要做什么?

关于 Kubernetes Engine Operations 中的数据模型更改以及这些更改对现有监控和日志记录配置的影响,本部分包含了更多具体信息。

使用迁移状态信息中心

要确定为迁移到 Kubernetes Engine Operations 而必须更新的 Cloud Monitoring 和 Cloud Logging 配置,请执行以下操作:

  1. 在 Cloud Console 中,转到 Monitoring

    转到“监控”

  2. 要访问迁移状态,请在 Monitoring 导航窗格中点击 设置,然后选择 Kubernetes 迁移状态 (Kubernetes Migration Status) 标签页。

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

显示迁移信息中心。

资源类型变化

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

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

指标名称变化
(旧)旧版 Logging 和 Monitoring 指标 (新)Kubernetes Engine Operations 指标
旧版 GKE 指标
container.googleapis.com/

示例:
  .../container/cpu/utilization
  .../container/uptime
  .../container/memory/bytes_total
Kubernetes Engine Monitoring 指标
kubernetes.io/

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

资源组变化

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

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

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

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

  1. 在 Cloud Console 中,选择包含要更新为 Kubernetes Engine Operations 的 GKE 集群的 Google Cloud 项目:

    转到 Cloud Console

  2. 选择 Monitoring

  3. 要访问迁移状态,请在 Monitoring 导航窗格中点击 设置,然后选择 Kubernetes 迁移状态 (Kubernetes Migration Status) 标签页。

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

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

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

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

以下是一些其他提示:

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

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

Logging 查询

如果您使用查询在 Cloud Logging 中查找和过滤日志,并使用了上述资源类型变化表中显示的任何旧版 Logging 和 Monitoring 资源类型,请将这些类型更改为相应的 Kubernetes Engine Operations 类型。

基于日志的指标

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

记录导出和排除项

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

日志条目内容的变化

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

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

  • logName 字段可能会更改。Kubernetes Engine Operations 日志条目的日志名称中会使用 stdoutstderr,而旧版 Logging 和 Monitoring 使用了更多种类的名称,包括容器名称。容器名称仍可用作资源标签。
  • 检查日志条目中的 labels 字段。此字段可能包含以前位于 metadata 日志条目字段中的信息。
  • 检查日志条目中的 resource.labels 字段。新资源类型具有额外的标签值。
日志条目变化
(旧)旧版 Logging 和 Monitoring 日志条目 (新)Kubernetes Engine Operations 日志条目
表格脚注
1 资源标签标识了产生指标的特定资源,例如特定集群和节点。
2 labels 字段出现在 Kubernetes Engine Operations 的新日志条目中,并且偶尔会出现在一些旧版 Logging 和 Monitoring 日志条目中。在 Kubernetes Engine Operations 中,它用于保存以前位于 metadata 日志条目字段中的一些信息。
日志条目资源
resource.labels(资源标签
日志条目资源
resource.labels(资源标签
日志条目元数据
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

日志位置的变化

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

后续步骤

  • 要了解新的 Kubernetes Engine Operations 信息中心,请参阅观察您的系统