
# 节点本地域名解析加速
#### 插件介绍
节点本地域名解析加速（node-local-dns）是基于社区NodeLocal DNSCache提供的插件，通过在集群节点上作为守护程序集运行DNS缓存代理，提高集群DNS性能。
#### 字段说明
表1参数描述 
| 参数     | 是否必选 | 参数类型                                            | 描述             |
|:---|:---|:---|:---|
| basic  | 否    | object                                          | 插件基础配置参数，无需指定。 |
| flavor | 是    | [表2] object      | 插件规格参数         |
| custom | 是    | [表3] object | 插件自定义参数        |
   
 表2flavor 
| 参数        | 是否必选 | 参数类型                                                      | 描述                                 |
|:---|:---|:---|:---|
| replicas  | 否    | String                                                    | 插件中admission-controller组件实例数，默认为：2 |
| resources | 否    | Array [resources] object | 容器资源（CPU、内存）配额。                    |
   
 表3custom 
| 参数                         | 是否必选 | 参数类型                                            | 描述                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| enable_dnsconfig_admission | 否    | bool                                            | 开启DNSConfig自动注入功能，默认：true。启用后，会创建DNSConfig动态注入控制器，该控制器基于Admission Webhook机制拦截目标命名空间（即命名空间包含标签node-localdns-injection=enabled）下Pod的创建请求，自动配置使用DNS缓存的Pod dnsConfig字段。未开启DNSConfig自动注入或Pod属于非目标命名空间，则需要手动给Pod配置DNSConfig。 |
| enable_namespace_admission | 否    | bool                                            | 为已创建的命名空间添加node-local-dns-injection=enabled标签，默认：true。命名空间添加标签后会识别命名空间的创建请求并自动添加标签，这些操作的目标不包含系统内置的命名空间（如kube-system）。                                                                                                  |
| multiAZEnable              | 否    | bool                                            | 插件中deployment组件多可用部署是否采用强制模式，默认：false。强制模式下插件Deployment实例强制调度到不同可用区的节点上，如集群下节点不满足多可用区，插件实例将无法全部运行。若multiAZEnable与multiAZBalance配置也同时为true，则以multiAZBalance为准使用多可用部署均分模式。                                               |
| multiAZBalance             | 否    | bool                                            | 插件中deployment组件多可用部署是否采用均分模式，默认：false。插件Deployment实例均匀调度到当前集群下各可用区，增加新的可用区后建议扩容插件实例以实现跨可用区高可用部署；均分模式限制不同可用区间插件实例数相差不超过1，单个可用区资源不足会导致后续其他实例无法调度。                                                                        |
| tolerations                | 否    | Array of [表5] | admission-controller组件污点容忍配置                                                                                                                                                                                           |
   
 表4resources字段数据结构说明 
| 参数          | 是否必选 | 参数类型   | 描述                                                                |
|:---|:---|:---|:---|
| limitsCpu   | 是    | String | CPU大小限制，单位：m                                                      |
| limitsMem   | 是    | String | 内存大小限制，单位：Mi                                                      |
| name        | 是    | String | 插件名称，固定为：node-local-dns-admission-controller或node-local-dns-cache |
| requestsCpu | 是    | String | 申请的CPU大小，单位：m                                                     |
| requestsMem | 是    | String | 申请的内存大小，单位：Mi                                                     |
   
 表5tolerations污点 
| 参数                | 是否必选 | 参数类型   | 描述    |
|:---|:---|:---|:---|
| key               | 否    | String | 污点键   |
| effect            | 否    | String | 污点策略  |
| operator          | 否    | String | 操作符   |
| tolerationSeconds | 否    | Int    | 容忍时间窗 |
   
#### 请求示例
```
{
"kind": "Addon",
"apiVersion": "v3",
"metadata": {
"annotations": {
"addon.install/type": "install"
}
},
"spec": {
"clusterID": "2292498e-d169-**********-0255ac1001ba",
"version": "1.6.2",
"addonTemplateName": "node-local-dns",
"values": {
                        "basic": {
"basickey":"val"
},
"flavor": {
"replicas": 2,
"resources": [{
"limitsCpu": "250m",
"limitsMem": "512Mi",
"name": "node-local-dns-admission-controller",
"requestsCpu": "250m",
"requestsMem": "512Mi"
},
{
"limitsCpu": "500m",
"limitsMem": "512Mi",
"name": "node-local-dns-cache",
"requestsCpu": "25m",
"requestsMem": "5Mi"
}]
},
"custom": {
"enable_dnsconfig_admission": true,
"enable_namespace_admission": true,
"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
}]
}
}
}
}
```
