
# 诊断项及修复方案
#### 集群诊断项及修复方案
集群诊断项包含以下维度。
#### 集群维度
| 集群诊断场景   | 诊断项                        | 是否需要开通监控中心 | 修复方案                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| 集群资源规划能力 | 集群控制节点是否高可用                | 是          | 集群为单控制节点或者存在控制节点异常，当再有控制节点故障时，集群将不可用，进而会影响集群中运行服务的可靠性。提升服务韧性建议使用高可用集群或者修复节点异常，当某个控制节点故障时，不影响集群业务。                                                                                                        |
| 集群资源规划能力 | 集群当前时间CPU的Request水位是否超过80% | 是          | Request代表工作负载运行的最低资源要求，集群水位过高，剩余资源不能够满足新应用Request要求时，应用将不能被创建。需要根据业务情况，合理规划资源分配。详情请参见[设置容器规格](https://support.huaweicloud.com/usermanual-cce/cce_10_0163.html)。                                          |
| 集群资源规划能力 | 集群当前时间内存的Request水位是否超过80%  | 是          | Request代表工作负载运行的最低资源要求，集群水位过高，剩余资源不能够满足新应用Request要求时，应用将不能被创建。需要根据业务情况，合理规划资源分配。详情请参见[设置容器规格](https://support.huaweicloud.com/usermanual-cce/cce_10_0163.html)。                                          |
| 集群资源规划能力 | 集群版本是否超期                   | 否          | 集群版本EOS后，云容器引擎（CCE）将不再支持对该版本的集群创建，同时不提供相应的技术支持，包含新特性更新、漏洞/问题修复、补丁升级以及工单指导、在线排查等客户支持，不再适用于CCE服务SLA保障。请前往CCE的集群管理页面，升级集群版本。详情请参见[集群升级指导](https://support.huaweicloud.com/usermanual-cce/cce_10_0197.html)。 |
| 集群运维能力   | 云原生监控插件状态是否正常              | 否          | 云原生监控插件主要提供了集群运维监控的能力，要体验一站式监控体系，需前往插件市场，安装插件并检查插件状态。详情请参见[云原生监控插件](https://support.huaweicloud.com/usermanual-cce/cce_10_0406.html)。                                                                    |
| 集群运维能力   | 云原生日志采集插件状态是否正常            | 否          | 云原生日志采集插件提供了集群中负载的日志采集、日志管理的能力，体验日志管理能力，帮助集群中服务问题快速定位定界。需前往插件市场，安装插件并检查插件状态。                                                                                                                             |
| 集群运维能力   | CCE节点故障检测插件状态是否正常          | 否          | CCE节点故障检测插件提供了节点异常监控的能力。如需体验节点监控能力，检查节点资源异常情况。需前往插件市场，安装插件并检查插件状态。详情请参见[CCE节点故障检测](https://support.huaweicloud.com/usermanual-cce/cce_10_0132.html)。                                                     |
| 集群配置     | 安全组配置是否正确                  | 否          | 集群安全组配置异常，直接影响节点之前的通信，导致节点不可用。请使用默认安全组配置。                                                                                                                                                                |
   
#### 核心插件维度
| 集群诊断场景               | 诊断项                                                        | 是否需要开通监控中心 | 修复方案                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| CoreDNS域名解析插件状态      | CoreDNS域名解析插件状态                                            | 否          | CoreDNS域名解析插件是系统必装的资源插件，为集群提供域名解析服务。插件未安装或者异常将影响集群整体业务响应，影响范围大。需前往插件市场，安装插件或者检查插件状态。                                                                                                                                                             |
| CoreDNS域名解析插件状态      | CoreDNS近24小时CPU使用率最大值是否超过80%                               | 是          | CoreDNS域名解析插件负责为集群提供域名解析服务，资源使用率过高有过载风险，过载会影响域名解析成功率，增大解析时延。为保证业务不受损，请分析CoreDNS近期QPS情况，分析可前往"监控中心 \> 仪表盘 \> CoreDNS视图"查看相关指标情况，如果长时间达到瓶颈，可调整CoreDNS实例规格。                                                                                         |
| CoreDNS域名解析插件状态      | CoreDNS近24小时内存使用率最大值是否超过80%                                | 是          | CoreDNS域名解析插件负责为集群提供域名解析服务，资源使用率过高有过载风险，过载会影响域名解析成功率，增大解析时延。为保证业务不受损，请分析CoreDNS近期QPS情况，分析可前往"监控中心 \> 仪表盘 \> CoreDNS视图"查看相关指标情况，如果长时间达到瓶颈，可调整CoreDNS实例规格。                                                                                         |
| CoreDNS域名解析插件状态      | CoreDNS近24小时是否存在域名解析失败的请求                                  | 是          | CoreDNS域名解析失败，将导致业务直接受损。 解决方案详情请参见[CCE集群内域名解析失败，如何定位处理？](https://support.huaweicloud.com/cce_faq/cce_faq_00197.html)                                                                                               |
| CoreDNS域名解析插件状态      | CoreDNS近24小时P99请求时延是否超过5s                                  | 是          | CoreDNS时延增加，将影响业务响应，导致业务受损。                                                                                                                                                                                                                      |
| CCE容器存储（Everest）插件状态 | Everest插件状态                                                | 否          | Everest插件是系统必装的存储插件，为集群提供云存储服务。插件未安装或者异常会直接导致集群存储能力受影响。需前往插件市场，安装插件或者检查插件状态。                                                                                                                                                                     |
| CCE容器存储（Everest）插件状态 | everest-controller近24小时CPU使用率最大值是否超过80%                    | 是          | Everest插件负责为集群提供云存储服务。资源使用率过高会导致存在过载风险，影响集群云存储能力。为保证云存储不受影响，请分析近期everest-controller负载情况，可前往"监控中心 \> 工作负载"监控中查看Everest实例相关指标情况，如果长时间达到瓶颈，可调整Everest实例规格，详情请参见[CCE容器存储（Everest）](https://support.huaweicloud.com/usermanual-cce/cce_10_0066.html)。 |
| CCE容器存储（Everest）插件状态 | everest-controller近24小时内存使用率最大值是否超过80%                     | 是          | Everest插件负责为集群提供云存储服务。资源使用率过高会导致存在过载风险，影响集群云存储能力。为保证云存储不受影响，请分析近期everest-controller负载情况，可前往"监控中心 \> 工作负载"监控中查看Everest实例相关指标情况，如果长时间达到瓶颈，可调整Everest实例规格，详情请参见[CCE容器存储（Everest）](https://support.huaweicloud.com/usermanual-cce/cce_10_0066.html)。 |
| 云原生监控插件状态            | 云原生监控插件状态                                                  | 否          | 同上云原生监控插件状态。                                                                                                                                                                                                                                     |
| 云原生监控插件状态            | prometheus工作负载近24小时CPU使用率最大值是否超过80%                        | 是          | 云原生监控插件主要提供了集群运维监控的能力，资源使用率过高会导致存在过载风险，影响集群监控能力。可前往"监控中心 \> 工作负载"监控中查看prometheus实例相关指标情况，如果长时间达到瓶颈，可调整prometheus实例规格。 说明： PVC资源使用率的检查在云原生监控插件为"本地数据存储"时执行，该模式下，采集到的指标数据会存放入集群PV中。      |
| 云原生监控插件状态            | prometheus工作负载近24小时内存使用率最大值是否超过80%                         | 是          | 云原生监控插件主要提供了集群运维监控的能力，资源使用率过高会导致存在过载风险，影响集群监控能力。可前往"监控中心 \> 工作负载"监控中查看prometheus实例相关指标情况，如果长时间达到瓶颈，可调整prometheus实例规格。 说明： PVC资源使用率的检查在云原生监控插件为"本地数据存储"时执行，该模式下，采集到的指标数据会存放入集群PV中。      |
| 云原生监控插件状态            | prometheus工作负载在Server部署模式下，prometheus-server的PVC使用率是否超过80% | 是          | 云原生监控插件主要提供了集群运维监控的能力，资源使用率过高会导致存在过载风险，影响集群监控能力。可前往"监控中心 \> 工作负载"监控中查看prometheus实例相关指标情况，如果长时间达到瓶颈，可调整prometheus实例规格。 说明： PVC资源使用率的检查在云原生监控插件为"本地数据存储"时执行，该模式下，采集到的指标数据会存放入集群PV中。      |
| 云原生监控插件状态            | prometheus工作负载近24小时是否出现OOM                                 | 否          | 云原生监控插件主要提供了集群运维监控的能力，插件实例由于内存使用量超过限制量，出现OOM。会导致指标上报受损，非高可用模式监控能力不可用，建议调整prometheus实例规格配置。                                                                                                                                                       |
| CCE集群弹性引擎插件状态        | 集群在开启节点池弹性扩缩容条件下，CCE集群弹性引擎插件状态是否可用                         | 否          | CCE集群弹性引擎插件为集群提供了弹性扩展能力。在节点池开启弹性扩缩容条件下，该插件状态异常将导致无法进行扩缩容，需前往插件中心，检查插件状态。 说明： CCE集群弹性引擎插件状态检查，是在开启节点池弹性扩缩容条件下检查的。节点池未开启弹性扩缩容将不进行检查。                                                   |
| 云原生日志采集插件状态          | 云原生日志采集插件状态                                                | 否          | 同上云原生日志采集插件状态                                                                                                                                                                                                                                    |
| 云原生日志采集插件状态          | LTS默认事件日志组、日志流是否创建成功                                       | 否          | 默认事件日志组和日志流分别是监控中心-事件功能的基本单位。缺失会导致监控中心-事件功能不可用，参见[通过云原生日志采集插件采集容器日志](https://support.huaweicloud.com/usermanual-cce/cce_10_0555.html)中默认事件日志组、日志流要求进行创建。                                                                                         |
   
#### 节点维度
| 集群诊断场景   | 诊断项                        | 是否需要开通监控中心 | 修复方案                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| 节点状态     | 节点状态是否就绪                   | 是          | 节点为承载业务的核心资源，状态不就绪可能直接导致承载在节点上的业务受到影响，需立即修复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 节点状态     | 节点状态不可调度                   | 是          | 节点不可调度将导致节点资源不能被正常使用，请前往CCE节点管理，查看节点状态是否符合预期。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 节点状态     | 节点kubelet状态                | 是          | kubelet为节点关键组件，不可用可能会导致节点异常，Pod状态不符合预期（与APIServer的Pod状态不一致）。可以到节点上通过如下命令查看kubelet日志，并分析异常原因。命令参考：**journalctl -l -u kubelet**                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 节点配置     | 节点当前时间内存的Request水位是否超过80%  | 是          | 节点的Request水位将影响新应用能否被调度到该节点上。水位过高，剩余资源不满足应用要求时，该节点将不会被调度到。本诊断项已为您检测出了Request水位高出阈值的节点资源，可根据检测结果合理规划您的应用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 节点配置     | 节点当前时间CPU的Request水位是否超过80% | 是          | 节点的Request水位将影响新应用能否被调度到该节点上。水位过高，剩余资源不满足应用要求时，该节点将不会被调度到。本诊断项已为您检测出了Request水位高出阈值的节点资源，可根据检测结果合理规划您的应用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 节点资源水位诊断 | 节点24小时内CPU使用率最大值是否超过80%    | 是          | 节点的cpu过高将导致节点处理能力下降，影响节点上运行的服务。请前往监控中心，查询节点CPU使用状况，合理规划节点资源，或者对节点进行扩容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 节点资源水位诊断 | 节点24小时内内存使用率最大值是否超过80%     | 是          | 节点内存过高，存在节点OOM风险，影响节点上服务的可用性。请前往监控中心，查看节点内存使用状况，合理规划节点资源，或者对节点进行扩容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 节点资源水位诊断 | 节点磁盘使用率是否超过80%             | 是          | 节点磁盘使用率过高将影响系统Pod和业务Pod，请及时扩容。建议通过如下命令查看磁盘信息： - **lsblk** 列出所有可用块设备的信息  - **df -h** 列出挂载的每个磁盘中的可用磁盘空间量  - **fdisk -l** 列出所有的分区                                                                                                                                                                                                        |
| 节点资源水位诊断 | 节点PID使用量是否正常               | 是          | 节点PID出现压力，可能导致节点不稳定，需释放无用进程或者[修改PID上限](https://support.huaweicloud.com/usermanual-cce/cce_10_0401.html)。可以通过如下命令查看PID信息。 - 查看最大PID数：**sysctl kernel.pid_max**  - 查看当前的最大PID：**ps -eLf\|awk '{print $2}' \| sort -rn\| head -n 1**  - 查看占用SPID最多的前5个进程：**ps -elT \| awk '{print $4}' \| sort \| uniq -c \| sort -k1 -g \| tail -5**   |
| 节点资源水位诊断 | 节点24小时内是否发生OOM事件           | 是          | 节点出现OOM将使节点中的服务功能受损，可前往监控中心分析内存运行状况，合理规划资源，或者进行扩容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
#### 负载维度
| 集群诊断场景  | 诊断项                       | 是否需要开通监控中心 | 修复方案                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| Pod状态   | Pod状态检查                   | 否          | Pod状态异常，可能会降低Pod所属工作负载的服务能力；所有副本均不可用时，会导致业务不可用。可以通过如下命令来查看 Pod 的信息： - 查看 Pod 的配置是否正确：**kubectl get pod \<PodName\> -n \<Namespace\> -o yaml**  - 查看 Pod 的事件：**kubectl describe pod \<PodName\> -n \<Namespace\>**  - 查看容器日志：**kubectl logs \<PodName\> -n\<Namespace\> -c \<ContainerName\>**   |
| Pod负载状态 | Pod在24小时内是否发生OOM          | 否          | Pod出现OOM将使对应服务功能受损，可前往监控中心分析Pod的内存运行状况，合理调整工作负载规格。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Pod负载状态 | Pod的24小时内CPU使用率最大值是否超过80% | 是          | 资源使用率过高，业务有过载风险，将导致业务时延增加，影响业务正常响应。可前往"监控中心 \> Pod"查看对应实例指标状况，如果长时间达到瓶颈，可调整容器规格。                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Pod负载状态 | Pod的24小时内内存使用率最大值是否超过80%  | 是          | 资源使用率过高，业务有过载风险，将导致业务时延增加，影响业务正常响应。可前往"监控中心 \> Pod"查看对应实例指标状况，如果长时间达到瓶颈，可调整容器规格。                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Pod配置   | Pod中的容器是否配置Request        | 否          | 建议配置request，如果request未设置，会影响Scheduler的调度决策；从而可能导致Pod被调度到资源无法满足要求的节点上，导致Pod无法运行；状态混乱过高的Request同样会降低节点的资源利用率。                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Pod探针配置 | Pod中的容器是否配置存活探针           | 否          | 建议配置存活探针，若未配置存活探针（livenessProbe），在Pod应用异常时，无法被及时感知并重启，从而影响业务QoS。建议配置存活探针（livenessProbe），规避存在容器内应用异常需要重启容器才能恢复时未及时重启导致业务异常的风险。                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Pod探针配置 | Pod中的容器是否配置就绪探针           | 否          | 建议配置就绪探针，若未配置就绪探针（readinessProbe），在Pod异常无法处理请求时，仍会有请求发送过至异常Pod从而影响业务QoS。建议配置就绪探针（readinessProbe），规避存在容器内应用异常无法处理请求时仍旧有请求发过来导致业务异常的风险。                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
#### 外部依赖维度
| 集群诊断场景   | 诊断项               | 是否需要开通监控中心 | 修复方案                                                         |
|:---|:---|:---|:---|
| 租户节点资源配额 | 租户云硬盘配额使用率是否超过90% | 是          | 资源的创建需要基于配额完成，租户配额不足，将影响集群节点的创建，请至"资源 \> 我的配额"页面，联系客服申请账号配额。 |
| 租户节点资源配额 | 租户ECS配额使用率是否超过90% | 是          | 资源的创建需要基于配额完成，租户配额不足，将影响集群节点的创建，请至"资源 \> 我的配额"页面，联系客服申请账号配额。 |
   
 #### Pod诊断项及修复方案
表1Pod诊断项及修复方案 
| 诊断项                                          || 修复方案                                                                                                        |
|:---|---|:---|
| FailedScheduling | Insufficient memory        | 节点可分配内存不足，请扩容节点。                                                                                            |
| FailedScheduling | Insufficient cpu           | 节点可分配CPU不足，请扩容节点。                                                                                           |
| FailedScheduling | skip schedule deleting pod | Pod正在删除中。                                                                                                   |
| FailedScheduling | 其他信息                       | Pod调度失败，执行查看Pod信息。 ``` kubectl describe <pod-name> ```                       |
| FailedAttachVolume                           || 请检查Everest插件状态和节点网络连接，同时确保节点具有正确的权限。                                                                        |
| FailedMount                                  || 请检查Everest插件状态和节点网络连接，同时确保节点具有正确的权限。                                                                        |
| InvalidDiskCapacity                          || 请检查节点的磁盘容量设置和实际可用空间，确保磁盘容量设置正确且满足应用程序或服务的需求。清理不必要的文件以释放磁盘空间。如果是动态卷，确保存储后端配置正确且可用。根据需要扩展磁盘容量或调整应用程序或服务的存储需求。 |
| BackOffPullImage                             || 请检查镜像URL是否正确。                                                                                               |
| FailedPullImage                              || 请检查镜像URL是否正确。                                                                                               |
| ErrImageNeverPull                            || 请检查本地镜像，建议将镜像拉取策略设置为IfNotPresent或Always。                                                                    |
| InspectFailed                                || 请检查镜像的完整性。                                                                                                  |
| FailedPostStartHook                          || 请检查后启动钩子的配置和脚本，确保其正确性。查看钩子执行的日志以获取错误信息，并根据错误信息修复钩子脚本中的问题。如果可能，尝试手动执行后启动钩子脚本以查看是否存在环境或权限问题。                  |
| FailedPreStopHook                            || 请检查预停止钩子的配置和脚本，确保其正确性。查看钩子执行的日志以获取错误信息，并根据错误信息修复钩子脚本中的问题。如果可能，尝试手动执行预停止钩子脚本以查看是否存在环境或权限问题。                  |
| ProbeWarning                                 || 请检查探针配置，确保探针设置正确并能正确评估容器的健康状态。查看告警消息，确定可能的问题，并根据需要调整探针配置或修复容器中的问题。                                          |
| Unhealthy                                    || 请检查Pod或容器的日志以查找错误信息。确保应用程序或服务在容器中正确启动和运行。检查容器资源使用情况以确定是否存在资源不足问题。根据日志和监控信息采取相应措施，如重启Pod或容器，修复应用程序或服务问题。     |
| FailedCreatePodContainer                     || 检查Pod和容器配置确保YAML配置文件正确无误，包括容器镜像、资源请求和限制等。                                                                   |
| Preempting                                   || 建议为负载设置合理的资源请求和限制，避免因资源不足而触发抢占。                                                                             |
| Killing                                      || 检查资源使用情况，确保Pod和节点的资源请求和限制设置合理，避免资源不足导致容器被终止。                                                                |
   
