kubernetes-handbook/practice/coredns.md

38 lines
2.2 KiB
Markdown
Raw Normal View History

2018-04-17 09:26:23 +08:00
# Kubernetes中CoreDNS安装实践
2018-04-17 12:02:08 +08:00
CoreDNSc可以在具有标准的Kube-DNS的Kubernetes集群中运行。作为* Kubernetes *的插件使用CoreDNS将从
2018-04-17 09:26:23 +08:00
Kubernetes集群中读取区zone数据。它实现了为Kubernetes的DNS服务发现定义的规范
https://github.com/kubernetes/dns/blob/master/docs/specification.md
## 部署CoreDNS需要使用到官方的提供的两个文件 [deploy.sh](https://github.com/coredns/deployment/blob/master/kubernetes/deploy.sh)和[coredns.yaml.sed](https://github.com/coredns/deployment/blob/master/kubernetes/coredns.yaml.sed)
`deploy.sh` 是一个用于在已经运行kube-dns的集群中生成运行CoreDNS部署文件manifest的工具脚本。它使用
'coredns.yaml.sed'文件作为模板创建一个ConfigMap和CoreDNS的deployment, 然后更新集群中已有的kube-dns
服务的selector使用CoreDNS的deployment。重用已有的服务并不会在服务的请求中发生冲突。
deploy.sh文件并不会删除kube-dns的deployment或者replication controller。如果要删除kube-dns, 你必须
在部署CoreDNS后手动的删除kube-dns。
You should examine the manifest carefully and make sure it is correct for your particular
cluster. Depending on how you have built your cluster and the version you are running,
some modifications to the manifest may be needed.
你需要仔细测试manifest文件以确保它能够对你的集群正常运行。这依赖于你的怎样构建你的集群以及你正在运行的集群版本。
对manifest文件做一些修改是有比要的。
In the best case scenario, all that's needed to replace Kube-DNS are these two commands:
在最佳的案例场景中使用CoreDNS替换Kube-DNS只需要使用下面的两个命令
~~~
$ ./deploy.sh | kubectl apply -f -
$ kubectl delete --namespace=kube-system deployment kube-dns
~~~
注意我们建议在部署CoreDNS后删除kube-dns。否则如果CoreDNS和kube-dns同时运行服务查询可能会随机的在CoreDNS和kube-dns之间产生。
对于non-RBAC部署你需要编辑生成的结果yaml文件
1. 从yaml文件的“Deployment”部分删除 `serviceAccountName: coredns`
2. 删除 `ServiceAccount`, `ClusterRole`, 和 `ClusterRoleBinding` 部分