为 Minikube 使用 CoreDNS

让 CoreDNS 与 Minikube 协作。

在我们的之前的帖子中,我们演示了如何在 Kubernetes 集群中使用 CoreDNS 代替 Kube-DNS 进行服务发现。在这篇博文中,为在使用 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

$ 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 个单词。