我最近在使用 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是怎么生效的呢?
- CoreDNS 在具有 2 个副本的部署中定义。
- configmap以卷的形式挂载到容器中。
这是此部署的定义。
kubectl describe deployment coredns -n=kube-system