用於 Minikube 的 CoreDNS

讓 CoreDNS 與 Minikube 一起運作。

在我們先前的文章中,我們展示了如何使用 CoreDNS 來取代 Kube-DNS,以在 Kubernetes 叢集中進行服務探索。在那篇部落格中,有一個關於嘗試在使用 Google Container Engine (GKE) 時替換 Kube-DNS 的問題的註腳。碰巧的是,minikube 也存在類似的問題,它是一個對開發人員非常有用的本地 Kubernetes 環境。

當您嘗試替換 Kube-DNS 時,您會發現當您將其服務修改為指向 CoreDNS 後不久,您的變更就會被還原。這是因為 Minikube 有一個附加元件管理器,它會定期驗證任何已安裝附加元件的組態狀態,而 Kube-DNS 就是其中一個附加元件。

幸運的是,這對 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,該 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 個字詞。