CoreDNS は現在 Kubernetes のベータ機能であり、Kubernetes 1.11 の一般提供 (GA)に向けて開発が進められています。これは、kubeadm、kube-up、minikube、kops などのインストールツールキットを介して、CoreDNS が Kubernetes の標準として利用可能になることを意味します。
このドキュメントは、Kubernetes クラスタを起動するために利用可能なさまざまなツールを使用する場合に、DNS サービスを CoreDNS から kube-dns に移行するためのガイドです。(原文ママ:CoreDNS から kube-dns へ)
Kubeadm を使用した CoreDNS のインストール
Kubeadm を使用して kube-dns の代わりに CoreDNS をインストールする方法に関する詳細なガイドは、こちらにあります。Kubernetes v1.10 以降、CoreDNS は kube-dns ConfigMap から CoreDNS ConfigMap への変換をサポートしています。つまり、kube-dns ConfigMap を介して stubdomains
、upstreamnameservers
、および federation
を構成していた場合、kubeadm upgrade
を使用して CoreDNS のインストールを選択すると、同等の CoreDNS ConfigMap に自動的に変換されます。
kube-dns の Stubdomain
と upstreamnameserver
は、CoreDNS の proxy
に変換されます。kube-dns の federation
には、CoreDNS に同等の federation
があります。
kube-dns の ConfigMap の例。
apiVersion: v1
data:
federations: |
{"foo" : "foo.feddomain.com"}
stubDomains: |
{"abc.com" : ["1.2.3.4"], "my.cluster.local" : ["2.3.4.5"]}
upstreamNameservers: |
["8.8.8.8", "8.8.4.4"]
kind: ConfigMap
metadata:
creationTimestamp: 2018-01-22T20:21:56Z
name: kube-dns
namespace: kube-system
変換後の CoreDNS Corefile。
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
upstream 8.8.8.8 8.8.4.4
pods insecure
fallthrough in-addr.arpa ip6.arpa
}
federation cluster.local {
foo foo.feddomain.com
}
prometheus :9153
proxy . 8.8.8.8 8.8.4.4
cache 30
}
abc.com:53 {
errors
cache 30
proxy . 1.2.3.4
}
my.cluster.local:53 {
errors
cache 30
proxy . 2.3.4.5
}
Minikube を使用した CoreDNS のインストール。
CoreDNS は アドオンマネージャー
で利用可能ですが、デフォルトでは無効になっています。
$ minikube addons list
- kube-dns: enabled
- registry: disabled
- registry-creds: disabled
- freshpod: disabled
- addon-manager: enabled
- dashboard: enabled
- coredns: disabled
- heapster: disabled
- efk: disabled
- ingress: disabled
- default-storageclass: enabled
- storage-provisioner: enabled
CoreDNS を有効にするには、次のコマンドを実行します。
注意: CoreDNS を有効にした後、kube-dns を無効にしてください。CoreDNS と kube-dns の両方が実行されている場合、クエリは CoreDNS または kube-dns のいずれかにランダムにヒットする可能性があります。
$ minikube addons enable coredns
coredns was successfully enabled
kube-up における CoreDNS
Kube-up は、Kubernetes クラスタを開始するもう1つの方法であり、現在は主にエンドツーエンド (e2e) テストの目的で GCE に Kubernetes をデプロイするために使用されています。DNS サービスをインストールするには、環境変数 ENABLE_CLUSTER_DNS
(デフォルト=true) が必要です。CoreDNS をデフォルトの DNS サービスとしてインストールするには、環境変数 CLUSTER_DNS_CORE_DNS
を true
に設定する必要があります。
Kops における CoreDNS
現在、Kops v1.10 は、kube-dns の代わりにインストールされるオプションとして CoreDNS を含むように設定されています。kube-dns の代わりに CoreDNS をインストールするには、Kops のクラスタ yaml 構成で provider
を CoreDNS
として指定する必要があります。
spec:
kubeDNS:
provider: CoreDNS
これにより、kube-dns の代わりに CoreDNS がインストールされます。
その他の方法による CoreDNS のインストール
kube-dns の代わりに CoreDNS をインストールしたいが、kubeadm
、minikube
、kube-up
、または kops
を使用していないユーザーのために、CoreDNS デプロイメントリポジトリに手順があり、kube-dns から CoreDNS への移行に役立ちます。ユーザーは、CoreDNS をデプロイした後、kube-dns デプロイメントを削除する必要があります。そうでない場合、CoreDNS と kube-dns の両方が実行されていると、クエリは CoreDNS または kube-dns のいずれかにランダムにヒットする可能性があります。