
# Kubernetes Metrics Server
#### 插件介绍
从Kubernetes 1.8开始，Kubernetes通过Metrics API提供资源使用指标，例如容器CPU和内存使用率。这些度量可以由用户直接访问（例如，通过使用kubectl top命令），或者由集群中的控制器（例如，Horizontal Pod Autoscaler）使用来进行决策，具体的组件为Metrics-Server，用来替换之前的heapster，heapster从1.11开始逐渐被废弃。
#### 字段说明
表1参数描述 
| 参数     | 是否必选 | 参数类型                                            | 描述             |
|:---|:---|:---|:---|
| basic  | 否    | object                                          | 插件基础配置参数，无需指定。 |
| flavor | 是    | [表2] object      | 插件规格参数         |
| custom | 是    | [表3] object | 插件自定义参数        |
   
 表2flavor 
| 参数          | 是否必选 | 参数类型                                                | 描述                         |
|:---|:---|:---|:---|
| description | 否    | String                                              | 插件相关的描述信息                  |
| name        | 是    | String                                              | 插件规格名称，固定为：Single-instance |
| replicas    | 是    | String                                              | 实例数，默认为：1                  |
| resources   | 是    | [resources] object | 容器资源（CPU、内存）配额。            |
   
 表3custom 
| 参数                     | 是否必选                                  | 参数类型                                                                       | 描述                                                     |
|:---|:---|:---|:---|
| multiAZBalance         | 否                                     | Bool                                                                       | 多可用区部署模式是否为均分模式，开启后将使用均分模式部署                           |
| multiAZEnabled         | 否                                     | Bool                                                                       | 是否多可用区部署，默认为false，如果为true，则强制跨可用区部署，若为false，则优先跨可用区部署。 |
| tolerations            | 否  | List\<Object\> [表6 tolerations污点]       | 插件的污点容忍策略                                              |
| node_match_expressions | 否                                     | List\<Object\> [表7 nodeMatchExpression] | 插件的节点亲和配置                                              |
   
 表4resources字段数据结构说明 
| 参数          | 是否必选 | 参数类型   | 描述                                                 |
|:---|:---|:---|:---|
| limitsCpu   | 是    | String | CPU大小限制，单位：m                                       |
| limitsMem   | 是    | String | 内存大小限制，单位：Mi  |
| name        | 是    | String | 插件名称，固定为：metrics-server                            |
| requestsCpu | 是    | String | 申请的CPU大小，单位：m                                      |
| requestsMem | 是    | String | 申请的内存大小，单位：Mi   |
   
表5tolerations污点 
| 参数                | 是否必选 | 参数类型   | 描述    |
|:---|:---|:---|:---|
| key               | 否    | String | 污点键   |
| effect            | 否    | String | 污点策略  |
| operator          | 否    | String | 操作符   |
| tolerationSeconds | 否    | Int    | 容忍时间窗 |
   
 表6nodeMatchExpression节点亲和配置 
| 参数       | 是否必选 | 参数类型           | 描述      |
|:---|:---|:---|:---|
| 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.3.39",
    "addonTemplateName": "metrics-server",
    "values": {
      "basic": {
        "image_version": "v0.6.2",
        "swr_addr": "***",
        "swr_user": "***",
        "rbac_enabled": true,
        "cluster_version": "v1.23"
      },
      "flavor": {
        "description": "Has only one instance",
        "name": "Single",
        "replicas": 1,
        "resources": [
          {
            "limitsCpu": "1000m",
            "limitsMem": "1000Mi",
            "name": "metrics-server",
            "requestsCpu": "100m",
            "requestsMem": "300Mi"
          }
        ],
        "category": [
          "CCE",
          "Turbo"
        ]
      },
      "custom": {
        "annotations": {},
        "multiAZBalance": false,
        "multiAZEnabled": false,
        "node_match_expressions": [],
        "tolerations": [
          {
            "key": "node.kubernetes.io/not-ready",
            "operator": "Exists",
            "effect": "NoExecute",
            "tolerationSeconds": 60
          },
          {
            "key": "node.kubernetes.io/unreachable",
            "operator": "Exists",
            "effect": "NoExecute",
            "tolerationSeconds": 60
          }
        ]
      }
    }
  }
}
```
