CoreDNSの設定はKubernetesのどこに保存されるのか

CoreDNSの設定はKubernetesのどこに保存されるのか

最近、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はどのように有効になりますか?

  1. CoreDNS は 2 つのレプリカを持つデプロイメントで定義されます。
  2. configmap はボリュームとしてコンテナにマウントされます。

このデプロイメントの定義は次のとおりです。

kubectl describe deployment coredns -n=kube-system

ここに画像の説明を入力してください

参照

関連情報