CoreDNS 的配置儲存在 Kubernetes 中的哪裡

CoreDNS 的配置儲存在 Kubernetes 中的哪裡

我最近在一個叢集上深入研究了 CoreDNS,其中使用 kubeadm 來安裝它。我發現我有 2 個副本的預設部署,但如果我想要更多副本怎麼辦?我知道我可以擴展,但這是我不想採取的額外步驟。我希望所有新建立的叢集都擁有 3 個用於 HA 的 CoreDNS(因為我將擁有 3 個 Master)。但我找不到有關 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

在此輸入影像描述

參考

相關內容