对系统组件使用日志记录和监控功能

本文档介绍如何在 GKE on VMware 中为系统组件配置日志记录和监控功能。

选项包括:

  • Cloud Logging 和 Cloud Monitoring
  • Google Cloud Managed Service for Prometheus(预览版)
  • Prometheus 和 Grafana

如需详细了解这些选项,请参阅日志记录和监控概览

受监控的资源

受监控的资源是 Google 如何表示资源(如集群、节点、Pod 和容器)。如需了解详情,请参阅 Cloud Monitoring 的受监控的资源类型文档。

如需查询日志和指标,您需要了解以下资源标签:

  • project_id:集群的日志记录监控项目项目 ID。您在集群配置文件的 stackdriver.projectID 字段中提供了此值。

  • location:您要存储 Cloud Logging 日志和 Cloud Monitoring 指标的 Google Cloud 区域。建议选择一个靠近您的本地数据中心的地区。在安装过程中,您在集群配置文件的 stackdriver.clusterLocation 字段中提供了此值。

  • cluster_name:您在创建集群时选择的集群名称。

    您可以通过检查 Stackdriver 自定义资源来检索管理员或用户集群的 cluster_name 值:

    kubectl get stackdriver stackdriver --namespace kube-system \
    --kubeconfig CLUSTER_KUBECONFIG --output yaml | grep 'clusterName:'
    

    其中

    • CLUSTER_KUBECONFIG 是需要集群名称的管理员集群或用户集群的 kubeconfig 文件的路径。

使用 Cloud Logging

您无需执行任何操作即可为集群启用 Cloud Logging。不过,您必须指定要在其中查看日志的 Google Cloud 项目。您可以在集群配置文件的 stackdriver 部分中指定 Google Cloud 项目。

您可以使用 Google Cloud 控制台中的 Logs Explorer 来访问日志。例如,要访问容器的日志,请执行以下操作:

  1. 打开项目 Google Cloud 控制台中的日志浏览器
  2. 通过以下方式查找容器的日志:
    1. 点击左上角的日志目录下拉框,然后选择 Kubernetes 容器
    2. 选择集群名称,然后选择命名空间,然后从层次结构中选择容器。

查看引导集群中控制器的日志

  1. 找到 onprem-admin-cluster-controller / clusterapi-controllers pod 名称

    默认情况下,种类集群名称为 gkectl-bootstrap-cluster

    "ADMIN_CLUSTER_NAME"
    resource.type="k8s_container"
    resource.labels.cluster_name="gkectl-bootstrap-cluster"
    
  2. 使用您找到的 Pod 名称修改查询,并获取日志

    resource.type="k8s_container"
    resource.labels.cluster_name="gkectl-bootstrap-cluster"
    resource.labels.pod_name="POD_NAME"
    

使用 Cloud Monitoring

您无需执行任何操作即可为集群启用 Cloud Monitoring。但是,您必须指定要在其中查看指标的 Google Cloud 项目。您可以在集群配置文件的 stackdriver 部分中指定 Google Cloud 项目。

您可以使用 Metrics Explorer,从 1500 多个指标中进行选择。如需访问 Metrics Explorer,请执行以下操作:

  1. 在 Google Cloud 控制台中,选择 Monitoring 或使用如下按钮:

    转到“监控”

  2. 选择资源 > Metrics Explorer

您还可以在 Google Cloud 控制台的信息中心内查看指标。如需了解如何创建信息中心和查看指标,请参阅创建信息中心

查看舰队级监控数据

如需查看使用 Cloud Monitoring 数据(包括 GKE on VMware)的舰队资源利用率的总体视图,您可以使用 Google Cloud 控制台中的 GKE Enterprise 概览。如需了解详情,请参阅使用 GKE Enterprise 概览

默认 Cloud Monitoring 配额限制

GKE on VMware 监控功能的默认上限为每个项目每分钟 6000 次 API 调用。如果超出此限制,系统可能不会显示您的指标。 如果您需要更高的监控限制,请通过 Google Cloud Console 申请

使用 Managed Service for Prometheus(预览版

Google Cloud Managed Service for Prometheus 是 Cloud Monitoring 的一部分,可作为选项使用。Managed Service for Prometheus 的优势包括:

  • 您可以继续使用现有的基于 Prometheus 的监控功能,而无需更改提醒和 Grafana 信息中心。

  • 如果您同时使用 GKE 和 GKE on VMware,则可以对所有集群上的指标使用相同的 PromQL。您还可以使用 Google Cloud 控制台的 Metrics Explorer 中的 PROMQL 标签页。

启用 Managed Service for Prometheus

打开名为 stackdriver 的 Stackdriver 对象进行修改:

kubectl --kubeconfig CLUSTER_KUBECONFIG --namespace kube-system \
    edit stackdriver stackdriver

添加 enableGMPForSystemMetrics 特性门控,并将其设置为 true

apiVersion: addons.gke.io/v1alpha1
kind: Stackdriver
metadata:
  name: stackdriver
  namespace: kube-system
spec:
  featureGates:
    enableGMPForSystemMetrics: true

关闭修改会话。

查看指标数据

启用 Managed Service for Prometheus 后,以下组件的指标因在 Cloud Monitoring 中的存储和查询方式而具有不同的格式:

  • kube-apiserver
  • kube-scheduler
  • kube-controller-manager
  • kubelet 和 cadvisor
  • kube-state-metrics
  • node-exporter

在新格式中,您可以使用 PromQL 或 Monitoring Query Language (MQL) 查询上述指标。

PromQL 示例:

histogram_quantile(0.95, sum(rate(apiserver_request_duration_seconds_bucket[5m])) by (le))

如需使用 MQL,请将受监控的资源设置为 prometheus_target,并将 Prometheus 类型作为后缀添加到指标。

MQL 示例:

fetch prometheus_target
| metric 'kubernetes.io/anthos/apiserver_request_duration_seconds/histogram'
| align delta(5m)
| every 5m
| group_by [], [value_histogram_percentile: percentile(value.histogram, 95)]

使用 Managed Service for Prometheus 配置 Grafana 信息中心

如需将 Grafana 与 Managed Service for Prometheus 中的指标数据搭配使用,请按照使用 Grafana 进行查询中的步骤对 Grafana 数据源进行身份验证和配置,以查询 Managed Service for Prometheus 中的数据。

GitHub 上的 anthos-samples 代码库中提供了一组示例 Grafana 信息中心。如需安装示例信息中心,请执行以下操作:

  1. 下载示例 .json 文件:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples.git
    cd anthos-samples/gmp-grafana-dashboards
    
  2. 如果您创建的 Grafana 数据源的名称与 Managed Service for Prometheus 不同,请更改所有 .json 文件中的 datasource 字段:

    sed -i "s/Managed Service for Prometheus/[DATASOURCE_NAME]/g" ./*.json
    

    [DATASOURCE_NAME] 替换为 Grafana 中指向 Prometheus frontend 服务的数据源名称。

  3. 通过浏览器访问 Grafana 界面,然后在信息中心菜单下选择 + 导入

    前往 Grafana 中的信息中心导入。

  4. 上传 .json 文件,或复制并粘贴文件内容,然后选择加载。文件内容成功加载后,选择导入。您还可以根据需要在导入之前更改信息中心名称和 UID。

    在 Grafana 中导入信息中心。

  5. 如果您的 GKE on VMware 和数据源已正确配置,导入的信息中心应该会成功加载。例如,以下屏幕截图显示了 cluster-capacity.json 配置的信息中心。

    Grafana 中的集群容量信息中心。

其他资源

如需详细了解 Managed Service for Prometheus,请参阅以下内容:

使用 Prometheus 和 Grafana

如需启用 Prometheus 和 Grafana,请打开名为 monitoring-sample 的 Monitoring 对象进行修改:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] edit \
    monitoring monitoring-sample --namespace kube-system

enablePrometheus 设置为 true

apiVersion: addons.gke.io/v1alpha1
   kind: Monitoring
   metadata:
     labels:
       k8s-app: monitoring-operator
     name: monitoring-sample
     namespace: kube-system
   spec:
     channel: stable
     ...
     enablePrometheus: false

关闭修改会话。

已知问题

在用户集群中,升级时会自动停用 Prometheus 和 Grafana。不过,配置和指标数据不会丢失。

如需解决此问题,请在升级后打开 monitoring-sample 进行修改,并将 enablePrometheus 设置为 true

从 Grafana 信息中心访问监控指标

Grafana 会显示从您的集群收集的指标。如需查看这些指标,您需要访问 Grafana 的信息中心:

  1. 获取在用户集群的 kube-system 命名空间中运行的 Grafana pod 的名称:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get pods

    其中,[USER_CLUSTER_KUBECONFIG] 是用户集群的 kubeconfig 文件。

  2. Grafana pod 有一个侦听 TCP localhost 端口 3000 的 HTTP 服务器。您可以将本地端口转发到 pod 中的端口 3000,以便通过网络浏览器查看 Grafana 的信息中心。

    例如,假设 pod 的名称为 grafana-0。如需将端口 50000 转发到 pod 中的端口 3000,请输入以下命令:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system port-forward grafana-0 50000:3000
  3. 在网络浏览器中,转到 http://localhost:50000

  4. 在登录页面,输入 admin 作为用户名和密码。

  5. 如果登录成功,系统会提示您更改密码。更改默认密码后,系统会加载用户集群的 Grafana 首页信息中心。

  6. 如需访问其他信息中心,请点击页面左上角的首页下拉菜单。

如需查看使用 Grafana 的示例,请参阅创建 Grafana 信息中心

访问提醒

Prometheus Alertmanager 会从 Prometheus 服务器收集提醒。您可以在 Grafana 信息中心查看这些提醒。如需查看提醒,您需要访问信息中心:

  1. alertmanager-0 pod 中的容器侦听 TCP 端口 9093。将本地端口转发到 pod 中的 9093 端口:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward \
       -n kube-system alertmanager-0 50001:9093
  2. 在网络浏览器中,转到 http://localhost:50001

更改 Prometheus Alertmanager 配置

您可以通过修改用户集群的 monitoring.yaml 文件来更改 Prometheus Alertmanager 的默认配置。如果您希望将提醒指向特定目标位置,而不是将其保留在信息中心,则应执行此操作。您可以在 Prometheus 的配置文档中了解如何配置 Alertmanager。

如需更改 Alertmanager 配置,请执行以下步骤:

  1. 制作用户集群的 monitoring.yaml 清单文件的副本:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system \
       get monitoring monitoring-sample -o yaml > monitoring.yaml
  2. 如需配置 Alertmanager,请更改 spec.alertmanager.yml 下的字段。完成后,保存已更改的清单。

  3. 将清单应用到您的集群:

    kubectl apply --kubeconfig [USER_CLUSTER_KUBECONIFG] -f monitoring.yaml

扩缩 Prometheus 资源

默认监控配置最多支持五个节点。对于较大的集群,您可以调整 Prometheus Server 资源。建议每个集群节点使用 50 个毫核的 CPU 和 500Mi 内存。请确保您的集群包含两个节点,每个节点都有足够的资源来容纳 Prometheus。如需了解详情,请参阅调整用户集群的大小

如需更改 Prometheus Server 资源,请执行以下步骤:

  1. 制作用户集群的 monitoring.yaml 清单文件的副本:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get monitoring monitoring-sample -o yaml > monitoring.yaml
  2. 如需替换资源,请更改 spec.resourceOverride 下的字段。完成后,保存已更改的清单。示例:

    spec:
      resourceOverride:
      - component: Prometheus
        resources:
          requests:
            cpu: 300m
            memory: 3000Mi
          limits:
            cpu: 300m
            memory: 3000Mi
    
  3. 将清单应用到您的集群:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f monitoring.yaml

创建 Grafana 信息中心

您已经部署了一个公开指标的应用,验证该指标是否已公开,并验证 Prometheus 是否会抓取该指标。现在,您可以将应用级指标添加到自定义 Grafana 信息中心。

如需创建 Grafana 信息中心,请执行以下步骤:

  1. 如有必要,请访问 Grafana
  2. 在首页信息中心内,点击页面左上角的首页下拉菜单。
  3. 在右侧菜单中,点击新信息中心
  4. 新面板部分中,点击图表。系统会显示一个空的图表信息中心。
  5. 点击面板标题,然后点击修改。底部的图表面板将打开并显示指标标签页。
  6. 数据源下拉菜单中选择用户。点击添加查询,然后在搜索字段中输入 foo
  7. 点击屏幕右上角的返回信息中心按钮。此时会显示您的信息中心。
  8. 如需保存信息中心,请点击屏幕右上角的保存信息中心。为信息中心选择一个名称,然后点击保存

停用 Prometheus 和 Grafana

如需停用集群内监控,请还原对 monitoring-sample 对象所做的更改:

  1. 打开要修改的 monitoring-sample 对象:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG edit \
       monitoring monitoring-sample --namespace kube-system

    USER_CLUSTER_KUBECONFIG 替换为您的用户集群的 kubeconfig 文件。

  2. 如需停用 Prometheus 和 Grafana,请将 enablePrometheus 设置为 false

       apiVersion: addons.gke.io/v1alpha1
       kind: Monitoring
       metadata:
         labels:
           k8s-app: monitoring-operator
         name: monitoring-sample
         namespace: kube-system
       spec:
         channel: stable
         ...
         enablePrometheus: false
    
  3. 关闭修改会话以保存更改。

  4. 确认 prometheus-0prometheus-1grafana-0 statefulset 已删除:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get pods --namespace kube-system
    

示例:将应用级指标添加到 Grafana 信息中心

以下部分将引导您逐步添加应用的指标。在此部分中,您需要完成以下任务:

  • 部署一个示例应用以公开名为 foo 的指标。
  • 验证 Prometheus 是否会公开并抓取该指标。
  • 创建一个自定义 Grafana 信息中心。

部署示例应用

示例应用在单个 pod 中运行。pod 的容器公开了 foo 指标,其常量值为 40

创建以下 pod 清单 pro-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: prometheus-example
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/port: '8080'
    prometheus.io/path: '/metrics'
spec:
  containers:
  - image: registry.k8s.io/prometheus-dummy-exporter:v0.1.0
    name: prometheus-example
    command:
    - /bin/sh
    - -c
    - ./prometheus_dummy_exporter --metric-name=foo --metric-value=40 --port=8080

然后将 pod 清单应用到您的用户集群:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f pro-pod.yaml

验证指标是否已公开并已抓取

  1. prometheus-example pod 中的容器侦听 TCP 端口 8080。将本地端口转发到 pod 中的端口 8080:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-example 50002:8080
  2. 如需验证应用是否公开指标,请运行以下命令:

    curl localhost:50002/metrics | grep foo
    

    该命令返回以下输出:

    # HELP foo Custom metric
    # TYPE foo gauge
    foo 40
  3. prometheus-0 pod 中的容器侦听 TCP 端口 9090。将本地端口转发到 pod 中的端口 9090:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-0 50003:9090
  4. 如需验证 Prometheus 是否正在抓取指标,请转到 http://localhost:50003/targets,此网址应该会将您转到 prometheus-io-pods 目标组下的 prometheus-0 pod。

  5. 如需查看 Prometheus 格式的指标,请转到 http://localhost:50003/graph。在搜索字段中输入 foo,然后点击执行。该页面应该会显示相应指标。

配置 Stackdriver 自定义资源

当您创建集群时,GKE on VMware 会自动创建一个 Stackdriver 自定义资源。您可以在自定义资源中修改规范,以替换 Stackdriver 组件中 CPU 和内存请求的默认值和限制,也可以单独替换默认存储空间大小和存储类别。

替换请求的默认值以及 CPU 和内存的限制

如需替换这些默认设置,请执行以下操作:

  1. 在命令行编辑器中打开 Stackdriver 自定义资源:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver

    其中,KUBECONFIG 是集群的 kubeconfig 文件的路径。该集群可以是管理员集群或用户集群。

  2. 在 Stackdriver 自定义资源中,在 spec 部分下添加 resourceAttrOverride 字段:

    resourceAttrOverride:
          POD_NAME_WITHOUT_RANDOM_SUFFIX/CONTAINER_NAME:
            LIMITS_OR_REQUESTS:
              RESOURCE: RESOURCE_QUANTITY

    请注意,resourceAttrOverride 字段将替换指定组件的所有现有默认限制和请求。示例文件如下所示:

    apiVersion: addons.gke.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      resourceAttrOverride:
        stackdriver-prometheus-k8s/prometheus-server:
          limits:
            cpu: 500m
            memory: 3000Mi
          requests:
            cpu: 300m
            memory: 2500Mi
  3. 保存更改并退出命令行编辑器。

  4. 检查 Pod 的运行状况:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver

    例如,运行状况良好的 Pod 如下所示:

    stackdriver-prometheus-k8s-0                                2/2     Running   0          5d19h
  5. 检查组件的 Pod 规范,确保资源设置正确。

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe pod POD_NAME

    其中,POD_NAME 是您刚刚更改的 Pod 的名称。例如 stackdriver-prometheus-k8s-0

    回答如下所示:

      Name:         stackdriver-prometheus-k8s-0
      Namespace:    kube-system
      ...
      Containers:
        prometheus-server:
          Limits:
            cpu: 500m
            memory: 3000Mi
          Requests:
            cpu: 300m
            memory: 2500Mi
          ...
          

替换存储空间大小默认值

如需替换这些默认设置,请执行以下操作:

  1. 在命令行编辑器中打开 Stackdriver 自定义资源:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
  2. spec 部分下添加 storageSizeOverride 字段。您可以使用组件 stackdriver-prometheus-k8sstackdriver-prometheus-app。此部分将采用如下格式:

    storageSizeOverride:
    STATEFULSET_NAME: SIZE
    

    此示例使用有状态集 stackdriver-prometheus-k8s 和大小 120Gi

    apiVersion: addons.gke.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      storageSizeOverride:
        stackdriver-prometheus-k8s: 120Gi
      
  3. 保存并退出命令行编辑器。

  4. 检查 Pod 的运行状况:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver
    例如,运行状况良好的 Pod 如下所示:
    stackdriver-prometheus-k8s-0                                2/2     Running   0          5d19h
  5. 检查组件的 Pod 规范,确保已正确替换存储空间大小。

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME

    回答如下所示:

    Volume Claims:
     Name:          my-statefulset-persistent-volume-claim
     StorageClass:  my-storage-class
     Labels:
     Annotations:
     Capacity:      120Gi
     Access Modes:  [ReadWriteOnce]          

替换存储类别默认值

前提条件

您必须先创建要使用的存储类别

如需替换 Logging 和 Monitoring 组件声明的永久性卷的默认存储类别,请执行以下操作:

  1. 在命令行编辑器中打开 Stackdriver 自定义资源:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver

    其中,KUBECONFIG 是集群的 kubeconfig 文件的路径。该集群可以是管理员集群或用户集群。

  2. spec 部分下添加 storageClassName 字段:

    storageClassName: STORAGECLASS_NAME

    请注意,storageClassName 字段会替换现有默认存储类别,并应用于声明了永久性卷的所有 Logging 和 Monitoring 组件。示例文件如下所示:

    apiVersion: addons.gke.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      proxyConfigSecretName: my-secret-name
      enableVPC: 
      optimizedMetrics: true
      storageClassName: my-storage-class
  3. 保存更改。

  4. 检查 Pod 的运行状况:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver

    例如,运行状况良好的 Pod 如下所示:

    stackdriver-prometheus-k8s-0                                1/1     Running   0          5d19h
  5. 检查组件的 Pod 规范,确保正确设置了存储类别。

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME

    例如,使用有状态集 stackdriver-prometheus-k8s 时,响应将如下所示:

    Volume Claims:
     Name:          stackdriver-prometheus-data
     StorageClass:  my-storage-class
     Labels:
     Annotations:
     Capacity:      120Gi
     Access Modes:  [ReadWriteOnce]          

停用优化的指标

默认情况下,集群中运行的指标代理会收集一组优化的容器、kubelet 和 kube-state-metrics 指标并报告给 Stackdriver。如果您需要额外的指标,我们建议您从 GKE Enterprise 指标列表中查找替代指标。

以下是一些您可能使用的替代指标示例:

已停用的指标 替代指标
kube_pod_start_time container/uptime
kube_pod_container_resource_requests container/cpu/request_cores
container/memory/request_bytes
kube_pod_container_resource_limits container/cpu/limit_cores
container/memory/limit_bytes

如需停用优化的 kube-state-metrics 指标默认设置(不推荐),请执行以下操作:

  1. 在命令行编辑器中打开 Stackdriver 自定义资源:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver

    其中,KUBECONFIG 是集群的 kubeconfig 文件的路径。该集群可以是管理员集群或用户集群。

  2. optimizedMetrics 字段设置为 false

    apiVersion: addons.gke.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      proxyConfigSecretName: my-secret-name
      enableVPC: 
      optimizedMetrics: false
      storageClassName: my-storage-class
  3. 保存更改并退出命令行编辑器。

已知问题:Cloud Monitoring 错误条件

(问题 ID 159761921)

在某些情况下,在每个新集群中部署的默认 Cloud Monitoring pod 可能会无响应。例如,升级集群后,重启 statefulset/prometheus-stackdriver-k8s 中的 pod 时,存储数据可能会损坏。

具体而言,当损坏的数据阻止 prometheus-stackdriver-sidecar 向集群存储空间 PersistentVolume 写入内容时,监控 pod stackdriver-prometheus-k8s-0 可能会陷入循环。

您可以按照以下步骤手动诊断并恢复错误。

诊断 Cloud Monitoring 故障

如果监控 pod 失败,日志将报告以下内容:

{"log":"level=warn ts=2020-04-08T22:15:44.557Z caller=queue_manager.go:534 component=queue_manager msg=\"Unrecoverable error sending samples to remote storage\" err=\"rpc error: code = InvalidArgument desc = One or more TimeSeries could not be written: One or more points were written more frequently than the maximum sampling period configured for the metric.: timeSeries[0-114]; Unknown metric: kubernetes.io/anthos/scheduler_pending_pods: timeSeries[196-198]\"\n","stream":"stderr","time":"2020-04-08T22:15:44.558246866Z"}

{"log":"level=info ts=2020-04-08T22:15:44.656Z caller=queue_manager.go:229 component=queue_manager msg=\"Remote storage stopped.\"\n","stream":"stderr","time":"2020-04-08T22:15:44.656798666Z"}

{"log":"level=error ts=2020-04-08T22:15:44.663Z caller=main.go:603 err=\"corruption after 29032448 bytes: unexpected non-zero byte in padded page\"\n","stream":"stderr","time":"2020-04-08T22:15:44.663707748Z"}

{"log":"level=info ts=2020-04-08T22:15:44.663Z caller=main.go:605 msg=\"See you next time!\"\n","stream":"stderr","time":"2020-04-08T22:15:44.664000941Z"}

从 Cloud Monitoring 错误恢复

如需手动恢复 Cloud Monitoring,请执行以下操作:

  1. 停止集群监控。缩减 stackdriver 运算符以防止监控协调:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system scale deployment stackdriver-operator --replicas 0

  2. 删除监控流水线工作负载:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete statefulset stackdriver-prometheus-k8s

  3. 删除监控流水线 PersistentVolumeClaims (PVC):

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete pvc -l app=stackdriver-prometheus-k8s

  4. 重启集群监控。扩展 Stackdriver 运算符以重新安装新的监控流水线并恢复协调:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system scale deployment stackdriver-operator --replicas=1