Minikube のための CoreDNS

Minikube で CoreDNS を機能させる方法

前回の投稿では、Kubernetes クラスターのサービス検出において、どのように CoreDNS を Kube-DNS の代わりに使用できるのかを示しました。そのブログ記事には、Google Container Engine(GKE)を使用する際に Kube-DNS を置き換えることに関する問題についての脚注があります。同様の問題は、開発者に非常に便利なローカル Kubernetes 環境である minikube でも起こりました。

Kube-DNS を置き換えようとすると、そのサービスを CoreDNS に向けるよう変更してからしばらくすると、変更が元に戻されることがわかります。これは、Minikube にはインストール済みのアドオンの構成状態を定期的に確認するアドオンマネージャーがあり、Kube-DNS がそれらのアドオンの 1 つであるためです。

幸いなことに、これは Minikube では非常に簡単に解決できます。minikube コマンドを使用すると、Minikube のインストール済みのプラグインを変更できます。したがって、前回のブログ記事で説明されている kubectl apply -f を実行する前に、kube-dns アドオンを無効にする必要があります。

$ minikube addons list
- dashboard: enabled
- default-storageclass: enabled
- kube-dns: enabled
- heapster: disabled
- ingress: disabled
- registry-creds: disabled
- addon-manager: enabled
$ minikube addons disable kube-dns
kube-dns was successfully disabled
$ minikube addons list
- heapster: disabled
- ingress: disabled
- registry-creds: disabled
- addon-manager: enabled
- dashboard: enabled
- default-storageclass: enabled
- kube-dns: disabled

次に、coredns.yaml を適用し、アドオンを無効にしただけでは自動的に削除されない、kube-dns ReplicationController を削除できます。

$ kubectl apply -f coredns.yaml
serviceaccount "coredns" configured
clusterrole "system:coredns" configured
clusterrolebinding "system:coredns" configured
configmap "coredns" configured
deployment "coredns" configured
service "kube-dns" configured
$ kubectl get -n kube-system pods
NAME                          READY     STATUS    RESTARTS   AGE
coredns-980047985-g2748       1/1       Running   1          36m
kube-addon-manager-minikube   1/1       Running   0          9d
kube-dns-v20-qzvr2            3/3       Running   0          1m
kubernetes-dashboard-ks1jp    1/1       Running   0          9d
$ kubectl delete -n kube-system rc kube-dns-v20
replicationcontroller "kube-dns-v20" deleted
$

これで、CoreDNS が起動して実行されており、アドオンマネージャーによって上書きされることはありません。

John Belamaric
公開: 検出DNSドキュメントKube-DNSKubernetesMinikubeサービス のタグを付け、320 の単語を使用しています。