第 8 章 metering 故障排除与调试
Metering 是一个已弃用的功能。弃用的功能仍然包含在 OpenShift Container Platform 中,并将继续被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。
有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中已弃用和删除的功能部分。
参考以下部分来协助排除和调试与 metering 相关的问题。
除本部分所述信息外,还需查看以下主题:
8.1. metering 故障排除
metering 常会遇到 pod 无法启动的问题。Pod 可能会因为缺少资源或其所依赖的资源(如 StorageClass
或 Secret
资源)不存在而无法启动。
8.1.1. 计算资源不足
安装或运行 metering 时常会遇到计算资源不足的问题。随着集群增长并创建更多报告,Reporting Operator pod 需要更多内存。如果内存用量达到 pod 限制,集群会认为 pod 内存不足(OOM),并以 OOMKilled
状态终止它。确保向 metering 分配的资源满足安装先决条件中描述的最低资源要求。
Metering Operator 不根据集群中的负载自动扩展 Reporting Operator。因此,Reporting Operator pod 的 CPU 使用量不会随着集群增长而增加。
要确定资源或调度方面是否存在问题,请按照 Kubernetes 文档Managing Compute Resources for Containers 中的故障排除说明操作。
要排除由于缺少计算资源而出现的问题,请在 openshift-metering
命名空间中检查以下内容。
先决条件
目前处于
openshift-metering
命名空间中。运行以下命令来进入openshift-metering
命名空间:$ oc project openshift-metering
流程
检查未完成的、显示
ReportingPeriodUnmetDependencies
状态的 meteringReport
资源:$ oc get reports
输出示例
NAME QUERY SCHEDULE RUNNING FAILED LAST REPORT TIME AGE namespace-cpu-utilization-adhoc-10 namespace-cpu-utilization Finished 2020-10-31T00:00:00Z 2m38s namespace-cpu-utilization-adhoc-11 namespace-cpu-utilization ReportingPeriodUnmetDependencies 2m23s namespace-memory-utilization-202010 namespace-memory-utilization ReportingPeriodUnmetDependencies 26s namespace-memory-utilization-202011 namespace-memory-utilization ReportingPeriodUnmetDependencies 14s
检查
NEWEST METRIC
小于报告结束日期的ReportDataSource
资源:$ oc get reportdatasource
输出示例
NAME EARLIEST METRIC NEWEST METRIC IMPORT START IMPORT END LAST IMPORT TIME AGE ... node-allocatable-cpu-cores 2020-04-23T09:14:00Z 2020-08-31T10:07:00Z 2020-04-23T09:14:00Z 2020-10-15T17:13:00Z 2020-12-09T12:45:10Z 230d node-allocatable-memory-bytes 2020-04-23T09:14:00Z 2020-08-30T05:19:00Z 2020-04-23T09:14:00Z 2020-10-14T08:01:00Z 2020-12-09T12:45:12Z 230d ... pod-usage-memory-bytes 2020-04-23T09:14:00Z 2020-08-24T20:25:00Z 2020-04-23T09:14:00Z 2020-10-09T23:31:00Z 2020-12-09T12:45:12Z 230d
检查
reporting-operator
Pod
资源的健康状态,以检查大量 pod 重启:$ oc get pods -l app=reporting-operator
输出示例
NAME READY STATUS RESTARTS AGE reporting-operator-84f7c9b7b6-fr697 2/2 Running 542 8d 1
- 1
- Reporting Operator pod 以更高的率重启。
检查
reporting-operator
Pod
资源是否有OOMKilled
终止:$ oc describe pod/reporting-operator-84f7c9b7b6-fr697
输出示例
Name: reporting-operator-84f7c9b7b6-fr697 Namespace: openshift-metering Priority: 0 Node: ip-10-xx-xx-xx.ap-southeast-1.compute.internal/10.xx.xx.xx ... Ports: 8080/TCP, 6060/TCP, 8082/TCP Host Ports: 0/TCP, 0/TCP, 0/TCP State: Running Started: Thu, 03 Dec 2020 20:59:45 +1000 Last State: Terminated Reason: OOMKilled 1 Exit Code: 137 Started: Thu, 03 Dec 2020 20:38:05 +1000 Finished: Thu, 03 Dec 2020 20:59:43 +1000
- 1
- Reporting Operator pod 因 OOM 终止而终止。
增加 reporting-operator pod 内存限制
如果您增加 pod 重启和 OOM 终止事件,您可以检查 Reporting Operator pod 的当前内存限值。增加内存限值可让 Reporting Operator Pod 更新报告数据源。如有必要,将 MeteringConfig
资源中的内存限值增加到 25% - 50%。
流程
检查
reporting-operator
Pod
资源的当前内存限值:$ oc describe pod reporting-operator-67d6f57c56-79mrt
输出示例
Name: reporting-operator-67d6f57c56-79mrt Namespace: openshift-metering Priority: 0 ... Ports: 8080/TCP, 6060/TCP, 8082/TCP Host Ports: 0/TCP, 0/TCP, 0/TCP State: Running Started: Tue, 08 Dec 2020 14:26:21 +1000 Ready: True Restart Count: 0 Limits: cpu: 1 memory: 500Mi 1 Requests: cpu: 500m memory: 250Mi Environment: ...
- 1
- Reporting Operator pod 的当前内存限值。
编辑
MeteringConfig
资源以更新内存限制:$ oc edit meteringconfig/operator-metering
MeteringConfig
资源示例kind: MeteringConfig metadata: name: operator-metering namespace: openshift-metering spec: reporting-operator: spec: resources: 1 limits: cpu: 1 memory: 750Mi requests: cpu: 500m memory: 500Mi ...
- 1
- 在
MeteringConfig
资源的resources
字段中添加或增加内存限值。
注意如果在增加内存限制后仍然有大量 OOM 终止事件,这可能代表报告处于待处理状态。
8.1.2. 未配置 StorageClass 资源
Metering 要求为动态置备配置默认 StorageClass
资源。
有关如何检查是否为集群配置了 StorageClass
资源、如何设置默认值以及如何配置 metering 以使用默认存储类的信息,请参阅有关配置 metering 的文档。
8.1.3. 未正确配置 secret
metering 常会遇到在配置持久性存储时所提供的 secret 不正确的问题。请务必查看示例配置文件并根据您的存储提供程序指南创建 secret。