CPU 不足

症状

启动时,遥测 pod 会进入和退出 CrashLoopBackoff 状态。这可能会导致指标或图表中出现周期性缺口,因为 pod 会重启。您还可能会发现与分析数据存在差异,因为缺少部分数据。

错误消息

使用 kubectl 查看 pod 状态时,您会看到一个或多个指标 pod 处于 CrashLoopBackoff 状态。请参阅以下命令:

kubectl get pods -n APIGEE_NAMESPACE

其中,APIGEE_NAMESPACE 是 Apigee Hybrid 组件的 Kubernetes 命名空间。如需了解详情,请参阅创建 apigee 命名空间

输出示例

NAME                                                      READY   STATUS             RESTARTS   AGE
apigee-metrics-default-telemetry-proxy-1104-hvwoo-zlmlw   0/1     CrashLoopBackoff   10         10m
apigee-metrics-adapter-apigee-telemetry-1104-7fyff-tts65  0/1     CrashLoopBackoff   10         10m
apigee-metrics-default-telemetry-proxy-1104-hvwoo-zlmlw   0/1     FailedScheduling   0          12m

常见诊断步骤

  1. 使用以下命令检查遥测 pod 是否存在问题:
    kubectl -n apigee get event 

    输出示例

    LAST SEEN   TYPE      REASON           OBJECT                                                           MESSAGE
    53m         Normal    SuccessfulCreate job/apigee-cassandra-schema-val-jghunt-20250709-0820206-29251940 Created pod: apigee-cassandra-schema-val-jghunt-20250709-0820206-292519fkt7j
    53m         Normal    Completed        job/apigee-cassandra-schema-val-jghunt-20250709-0820206-29251940 Job completed
    43m         Normal    SuccessfulCreate job/apigee-cassandra-schema-val-jghunt-20250709-0820206-29251950 Created pod: apigee-cassandra-schema-val-jghunt-20250709-0820206-292519l87m8
    43m         Normal    Completed        job/apigee-cassandra-schema-val-jghunt-20250709-0820206-29251950 Job completed
    33m         Normal    SuccessfulCreate job/apigee-cassandra-schema-val-jghunt-20250709-0820206-29251960 Created pod: apigee-cassandra-schema-val-jghunt-20250709-0820206-29251962ncc
        
  2. 您还可以使用以下命令检查处于 CrashLoopBackOff 状态的遥测 pod 的事件:
    kubectl -n apigee describe POD_NAME

    其中,POD_NAME 是处于 CrashLoopBackOff 状态的 pod 的名称。

    输出示例

     apigee-metrics-apigee-telemetry-app-1101-qc36n-dxzrv    
  3. 您还可以使用以下命令检查 pod 的 cpu 状态:
    kubectl -n apigee get hpa | grep unknown

    输出示例

    apigee-metrics-apigee-telemetry-app-1101-qc36n-dxzrv   ReplicaSet/apigee-metrics-apigee-telemetry-app-1101-qc36n-dxzrv   /80%                                2         10        2          8h
     

可能的原因

原因 说明 适用的问题排查说明
缺少 metrics.app.resources.requests.cpumetrics.app.resources.limits.cpu 必须在 overrides.yaml 文件中指定 cpu Apigee Hybrid

原因

overrides.yaml 文件中未提及 cpu,因此 cpu 的值为未定义。

诊断

检查您的 overrides.yaml 文件,看看是否为 metrics.app.resources.requests.cpumetrics.app.resources.limits.cpu 定义了两个 cpu 值。

解决方法

如果 overrides.yaml 文件中缺少指标的 cpu 设置,请在 overrides.yaml 文件中提供这两个 cpu 值。

  1. overrides.yaml 文件中的 metrics 部分下添加以下配置:

    metrics:
      app: # The apigee-prometheus-app container in the "app" pod
        resources:
          requests:
            memory: 512Mi # Default value: 512Mi
            cpu: 500m # Default value: 500m
          limits:
            memory: 2Gi # default: 1Gi
            cpu: 500m # Default value: 500m
      

  2. 使用以下命令应用更改:
    helm upgrade ENV_RELEASE_NAME apigee-env/ \
    --install \
    --namespace APIGEE_NAMESPACE \
    --set env=ENV_NAME \
    -f OVERRIDES_FILE
    • 其中,ENV_RELEASE_NAME 是用于跟踪 apigee-env 图表的安装和升级情况的唯一名称。虽然它通常与 ENV_NAME 相同,但如果环境与环境组具有相同的名称,则必须不同。例如,如果两者都名为 dev,您可以使用 dev-env-releasedev-envgroup-release 来区分它们。

    • 其中,APIGEE_NAMESPACE 是 Apigee Hybrid 组件的 Kubernetes 命名空间。如需了解详情,请参阅创建 apigee 命名空间

    • 其中,ENV_NAME 是您在界面中创建环境时使用的名称。

    • 其中,OVERRIDES_FILE 是在升级或安装过程中使用的 overrides.yaml 文件。

如需了解详情,请参阅配置属性参考文档

必须收集的诊断信息

如果按照上述说明操作后问题仍然存在,请收集以下诊断信息,然后与 Google Cloud Customer Care 联系:

  1. overrides.yaml 文件。
  2. Apigee Hybrid must-gather 脚本的输出。