CoreDNS 的配置在 Kubernetes 中存储在哪里

CoreDNS 的配置在 Kubernetes 中存储在哪里

我最近在使用 kubeadm 安装的集群上深入研究了 CoreDNS。我发现我有一个默认部署的 2 个副本,但如果我想要更多副本怎么办?我知道我可以扩展,但这是一个我不想采取的额外步骤。我希望所有新创建的集群都有 3 个 CoreDNS 来实现 HA(因为我将有 3 个主服务器)。但我找不到有关 kubeadm 使用的清单存储位置的任何信息。

我还想为 pod 设置 pod 反亲和性规则。

我可能还想配置 CoreDNS 配置映射。

kubeadm 用于安装和配置 CoreDNS 的配置存储在哪里?

答案1

CoreDNS 的配置被硬编码到 manifest.go 文件中。https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/phases/addons/dns/manifests.go#L59

因此,如果您想要定制,您可以分叉 kubeadm 分支并构建自己的分支。

答案2

您可以通过这种方式检查CoreDNS的配置。

kubectl describe configmap coredns  -n=kube-system 

输出:

Name:         coredns
Namespace:    kube-system
Labels:       <none>
Annotations:  <none>

Data
====
Corefile:
----
.:53 {
    errors
    health {
       lameduck 5s
    }
    ready
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       fallthrough in-addr.arpa ip6.arpa
       ttl 30
    }
    prometheus :9153
    forward . /etc/resolv.conf {
       max_concurrent 1000
    }
    cache 30
    loop
    reload
    loadbalance
}


BinaryData
====

Events:  <none>

这个ConfigMap是怎么生效的呢?

  1. CoreDNS 在具有 2 个副本的部署中定义。
  2. configmap以卷的形式挂载到容器中。

这是此部署的定义。

kubectl describe deployment coredns -n=kube-system

在此处输入图片描述

参考

相关内容