
最近、kubeadm を使用してインストールしたクラスターで CoreDNS を詳しく調べていました。デフォルトで 2 つのレプリカが展開されていることがわかりましたが、さらにレプリカが必要な場合はどうすればよいでしょうか? スケーリングできることはわかっていますが、それは余分な手順なので、実行したくないと思います。作成されたすべての新しいクラスターに HA 用の 3 つの CoreDNS があるようにしたいです (マスターが 3 つあるため)。しかし、kubeadm が使用するマニフェストがどこに保存されているかについての情報が見つかりません。
また、ポッドに対してポッドアンチアフィニティルールを設定する必要があります。
CoreDNS configmap を構成することもできます。
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