
我最近在一個叢集上深入研究了 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是如何生效的呢?
- CoreDNS 在具有 2 個副本的部署中定義。
- configmap 作為磁碟區安裝到容器。
這是此部署的定義。
kubectl describe deployment coredns -n=kube-system