
# CCE节点故障检测
#### 插件介绍
CCE节点故障检测插件（node-problem-detector，简称NPD）是一款监控集群节点异常事件的插件，以及对接第三方监控平台功能的组件。它是一个在每个节点上运行的守护程序，可从不同的守护进程中搜集节点问题并将其报告给apiserver。node-problem-detector可以作为DaemonSet运行， 也可以独立运行。
#### 字段说明
表1参数描述 
| 参数     | 是否必选 | 参数类型                                            | 描述             |
|:---|:---|:---|:---|
| basic  | 否    | object                                          | 插件基础配置参数，无需指定。 |
| flavor | 是    | [表2] object      | 插件规格参数         |
| custom | 是    | [表3] object | 插件自定义参数        |
   
 表2flavor 
| 参数          | 是否必选 | 参数类型                                                | 描述                         |
|:---|:---|:---|:---|
| description | 否    | String                                              | 插件相关的描述信息                  |
| name        | 是    | String                                              | 插件规格名称，固定为：Single-instance |
| replicas    | 是    | String                                              | 实例数，默认为：1                  |
| resources   | 是    | [resources] object | 容器资源（CPU、内存）配额。            |
   
 表3custom 
| 参数                     | 是否必选 | 参数类型                                                                       | 描述                                                     |
|:---|:---|:---|:---|
| feature_gate           | 否    | String                                                                     | 特性开关，管理开启beta特性                                        |
| multiAZBalance         | 否    | Bool                                                                       | 多可用区部署                                                 |
| multiAZEnabled         | 否    | Bool                                                                       | 是否多可用区部署，默认为false，如果为true，则强制跨可用区部署，若为false，则优先跨可用区部署。 |
| npc                    | 是    | object [表5 npc]                           | node-problem-controller的配置                             |
| tolerations            | 否    | List\<Object\> [表6 tolerations污点]       | 插件的污点容忍策略                                              |
| node_match_expressions | 否    | List\<Object\> [表7 nodeMatchExpression] | 插件的节点亲和配置                                              |
   
 表4resources字段数据结构说明 
| 参数          | 是否必选 | 参数类型   | 描述                        |
|:---|:---|:---|:---|
| limitsCpu   | 是    | String | CPU大小限制，单位：m              |
| limitsMem   | 是    | String | 内存大小限制，单位：Mi              |
| name        | 是    | String | 模板名称，固定为：custom-resources |
| requestsCpu | 是    | String | 申请的CPU大小，单位：m             |
| requestsMem | 是    | String | 申请的内存大小，单位：Mi             |
   
 表5npc字段数据结构说明 
| 参数             | 是否必选 | 参数类型          | 描述                                                                                |
|:---|:---|:---|:---|
| maxTaintedNode | 是    | String or Int | 单个故障在多个节点间发生时，最多允许多少个节点被npc添加污点，避免雪崩效应。 支持int格式和百分比格式。 |
   
表6tolerations污点 
| 参数                | 是否必选 | 参数类型   | 描述    |
|:---|:---|:---|:---|
| key               | 否    | String | 污点键   |
| effect            | 否    | String | 污点策略  |
| operator          | 否    | String | 操作符   |
| tolerationSeconds | 否    | Int    | 容忍时间窗 |
   
 表7nodeMatchExpression节点亲和配置 
| 参数       | 是否必选 | 参数类型           | 描述      |
|:---|:---|:---|:---|
| key      | 否    | String         | 污点键     |
| values   | 否    | List\<String\> | 节点亲和的名称 |
| operator | 否    | String         | 操作符     |
   
#### 请求示例
```
{
  "kind": "Addon",
  "apiVersion": "v3",
  "metadata": {
    "annotations": {
      "addon.install/type": "install"
    }
  },
  "spec": {
    "clusterID": "b78fb690-b82c-11ee-83cf-0255ac100b0f",
    "version": "1.18.48",
    "addonTemplateName": "npd",
    "values": {
      "basic": {
        "image_version": "1.18.48",
        "swr_addr": "***",
        "swr_user": "***",
        "rbac_enabled": true,
        "cluster_version": "v1.23"
      },
      "flavor": {
        "description": "custom resources",
        "name": "custom-resources",
        "replicas": 2,
        "resources": [
          {
            "limitsCpu": "100m",
            "limitsMem": "300Mi",
            "name": "node-problem-controller",
            "requestsCpu": "30m",
            "requestsMem": "100Mi"
          },
          {
            "limitsCpu": "100m",
            "limitsMem": "300Mi",
            "name": "node-problem-detector",
            "requestsCpu": "30m",
            "requestsMem": "100Mi"
          }
        ],
        "category": [
          "CCE",
          "Turbo"
        ]
      },
      "custom": {
        "annotations": {},
        "common": {},
        "feature_gates": "",
        "multiAZBalance": false,
        "multiAZEnabled": false,
        "node_match_expressions": [],
        "npc": {
          "maxTaintedNode": "10%"
        },
        "tolerations": [
          {
            "key": "node.kubernetes.io/not-ready",
            "operator": "Exists",
            "effect": "NoExecute",
            "tolerationSeconds": 60
          },
          {
            "key": "node.kubernetes.io/unreachable",
            "operator": "Exists",
            "effect": "NoExecute",
            "tolerationSeconds": 60
          }
        ]
      }
    }
  }
}
```
