更新时间:2024-11-06 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
				}]
			}
		}
	}
}