更新时间:2025-03-04 GMT+08:00

CoreDNS域名解析

插件介绍

CoreDNS是一款通过链式插件的方式给Kubernetes提供DNS解析服务的DNS服务器,为Kubernetes社区推荐的DNS服务器解决方案。

字段说明

表1 参数描述

参数

是否必选

参数类型

描述

basic

否

object

插件基础配置参数,无需用户指定。

flavor

是

表2 object

插件规格参数

custom

是

表3 object

插件自定义参数

表2 flavor

参数

是否必选

参数类型

描述

replicas

是

int

实例数,默认为:2

resources

是

Array of resources object

容器资源(CPU、内存)配额。

表3 custom

参数

是否必选

参数类型

描述

servers

否

object

servers配置

stub_domains

否

Map<String>[]string

存根域配置

multiAZEnable

否

bool

插件中deployment组件多可用部署是否采用强制模式,默认:false。强制模式下插件Deployment实例强制调度到不同可用区的节点上,如集群下节点不满足多可用区,插件实例将无法全部运行。若multiAZEnable与multiAZBalance配置也同时为true,则以multiAZBalance为准使用多可用部署均分模式。

multiAZBalance

否

bool

插件中deployment组件多可用部署是否采用均分模式,默认:false。插件Deployment实例均匀调度到当前集群下各可用区,增加新的可用区后建议扩容插件实例以实现跨可用区高可用部署;均分模式限制不同可用区间插件实例数相差不超过1,单个可用区资源不足会导致后续其他实例无法调度。

tolerations

否

Array of 表5

污点容忍配置。

表4 resources字段数据结构说明

参数

是否必选

参数类型

描述

limitsCpu

是

String

CPU大小限制,单位:m

limitsMem

是

String

内存大小限制,单位:Mi

name

是

String

插件名称,固定为:coredns

requestsCpu

是

String

申请的CPU大小,单位:m

requestsMem

是

String

申请的内存大小,单位:Mi

表5 tolerations污点

参数

是否必选

参数类型

描述

key

否

String

污点键

effect

否

String

污点策略

operator

否

String

操作符

tolerationSeconds

否

Int

容忍时间窗

表6 server配置

参数

是否必选

参数类型

描述

port

否

Int

域端口配置,默认5353。

zones

否

Array of 表8

域配置。

plugins

否

Array of 表7

plugin插件配置。

表7 plugin配置

参数

是否必选

参数类型

描述

name

是

String

plugin插件名称。

configBlock

否

String

plugin插件配置。

parameters

否

String/Int

plugin插件扩展参数。

表8 zone域配置

参数

是否必选

参数类型

描述

zone

是

String

监听的域,默认为"."。

请求示例

{
	"kind": "Addon",
	"apiVersion": "v3",
	"metadata": {
		"annotations": {
			"addon.install/type": "install"
		}
	},
	"spec": {
		"clusterID": "2292498e-******-0255ac1001ba",
		"version": "1.29.2",
		"addonTemplateName": "coredns",
		"values": {
                        "basic": {
				"basickey":"val"
			},
			"flavor": {
				"replicas": 2,
				"resources": [{
					"limitsCpu": "2000m",
					"limitsMem": "2000Mi",
					"name": "coredns",
					"requestsCpu": "2000m",
					"requestsMem": "2000Mi"
				}]
			},
			"custom": {
				"multiAZBalance": false,
				"multiAZEnabled": false,
				"node_match_expressions": [],
				"servers": [{
					"plugins": [{
						"name": "bind",
						"parameters": "{$POD_IP}"
					},
					{
						"configBlock": "servfail 5s",
						"name": "cache",
						"parameters": 30
					},
					{
						"name": "errors"
					},
					{
						"name": "health",
						"parameters": "{$POD_IP}:8080"
					},
					{
						"name": "ready",
						"parameters": "{$POD_IP}:8081"
					},
					{
						"configBlock": "pods insecure\nfallthrough in-addr.arpa ip6.arpa",
						"name": "kubernetes",
						"parameters": "cluster.local in-addr.arpa ip6.arpa"
					},
					{
						"name": "loadbalance",
						"parameters": "round_robin"
					},
					{
						"name": "prometheus",
						"parameters": "{$POD_IP}:9153"
					},
					{
						"configBlock": "policy random",
						"name": "forward",
						"parameters": ". /etc/resolv.conf"
					},
					{
						"name": "reload"
					}],
					"port": 5353,
					"zones": [{
						"zone": "."
					}]
				}],
				"stub_domains": {
					
				},
				"tolerations": [{
					"key": "node.kubernetes.io/not-ready",
					"operator": "Exists",
					"effect": "NoExecute",
					"tolerationSeconds": 60
				},
				{
					"key": "node.kubernetes.io/unreachable",
					"operator": "Exists",
					"effect": "NoExecute",
					"tolerationSeconds": 60
				}]
			}
		}
	}
}