Skip to content

Commit 5daf56d

Browse files
committed
adjust format
1 parent 4bd67fe commit 5daf56d

File tree

3 files changed

+39
-39
lines changed

3 files changed

+39
-39
lines changed

practice/configuring-dns.md

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 配置内置DNS(kube-dns
1+
# 安装配置kube-dns
22

33
在我们安装Kubernetes集群的时候就已经安装了kube-dns插件,这个插件也是官方推荐安装的。通过将 Service 注册到 DNS 中,Kuberentes 可以为我们提供一种简单的服务注册发现与负载均衡方式。
44

@@ -146,7 +146,7 @@ kube-dns `kube-system:kube-dns` ConfigMap 的选项如下所示:
146146

147147
#### 示例:存根域
148148

149-
在这个例子中,用户有一个 Consul DNS 服务发现系统,他们希望能够与 kube-dns 集成起来。 Consul 域名服务器地址为 10.150.0.1,所有的 Consul 名字具有后缀 .consul.local。 要配置 Kubernetes,集群管理员只需要简单地创建一个 ConfigMap 对象,如下所示:
149+
在这个例子中,用户有一个 Consul DNS 服务发现系统,他们希望能够与 kube-dns 集成起来。 Consul 域名服务器地址为 10.150.0.1,所有的 Consul 名字具有后缀 `.consul.local`。 要配置 Kubernetes,集群管理员只需要简单地创建一个 ConfigMap 对象,如下所示:
150150

151151
```yaml
152152
apiVersion: v1
@@ -201,14 +201,13 @@ spec:
201201

202202
使用该文件创建 Pod 并验证其状态:
203203

204-
```bash
205204
$ kubectl create -f busybox.yaml
206205
pod "busybox" created
207206

208207
$ kubectl get pods busybox
209208
NAME READY STATUS RESTARTS AGE
210209
busybox 1/1 Running 0 <some-time>
211-
```
210+
```
212211

213212
该 Pod 运行后,您可以在它的环境中执行 `nslookup`。如果您看到类似如下的输出,表示 DNS 正在正确工作。
214213

@@ -219,95 +218,95 @@ Address 1: 10.0.0.10
219218

220219
Name: kubernetes.default
221220
Address 1: 10.0.0.1
222-
```
221+
```
223222
224223
如果 `nslookup` 命令失败,检查如下内容:
225224
226225
### 首先检查本地 DNS 配置
227226
228227
查看下 resolv.conf 文件。(参考[集成节点的 DNS](inheriting-dns-from-the-node)和 下面的[已知问题](#known-issues)获取更多信息)
229228
230-
```bash
229+
```bash
231230
$ kubectl exec busybox cat /etc/resolv.conf
232-
```
231+
```
233232

234233
验证搜索路径和名称服务器设置如下(请注意,搜索路径可能因不同的云提供商而异):
235234

236-
```
235+
```
237236
search default.svc.cluster.local svc.cluster.local cluster.local google.internal c.gce_project_id.internal
238237
nameserver 10.0.0.10
239238
options ndots:5
240-
```
239+
```
241240

242241
如果看到如下错误表明错误来自 kube-dns 或相关服务:
243242

244-
```
243+
```
245244
$ kubectl exec -ti busybox -- nslookup kubernetes.default
246245
Server: 10.0.0.10
247246
Address 1: 10.0.0.10
248247
249248
nslookup: can't resolve 'kubernetes.default'
250-
```
249+
```
251250

252251
或者
253252

254-
```
253+
```
255254
$ kubectl exec -ti busybox -- nslookup kubernetes.default
256255
Server: 10.0.0.10
257256
Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.local
258257
259258
nslookup: can't resolve 'kubernetes.default'
260-
```
259+
```
261260

262261
### 检查 DNS pod 是否在运行
263262

264263
使用 `kubectl get pods` 命令验证 DNS pod 是否正在运行。
265264

266-
```bash
265+
```bash
267266
$ kubectl get pods --namespace=kube-system -l k8s-app=kube-dns
268267
NAME READY STATUS RESTARTS AGE
269268
...
270269
kube-dns-v19-ezo1y 3/3 Running 0 1h
271270
...
272-
```
271+
```
273272

274273
如果您看到没有 Pod 运行或者 Pod 处于 失败/完成 状态,DNS 插件可能没有部署到您的当前环境中,您需要手动部署。
275274

276275
### 检查 DNS pod 中的错误
277276

278277
使用 `kubectl logs` 命令查看 DNS 守护进程的日志。
279278

280-
```bash
279+
```bash
281280
$ kubectl logs --namespace=kube-system $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name) -c kubedns
282281
$ kubectl logs --namespace=kube-system $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name) -c dnsmasq
283282
$ kubectl logs --namespace=kube-system $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name) -c sidecar
284-
```
283+
```
285284

286285
看看有没有可疑的日志。以字母“`W`”,“`E`”,“`F`”开头的代表警告、错误和失败。请搜索具有这些日志级别的条目,并使用 [kubernetes issues](https://github.com/kubernetes/kubernetes/issues)来报告意外错误。
287286

288287
### DNS 服务启动了吗?
289288

290289
使用 `kubectl get service` 命令验证 DNS 服务是否启动。
291290

292-
```bash
291+
```bash
293292
$ kubectl get svc --namespace=kube-system
294293
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
295294
...
296295
kube-dns 10.0.0.10 <none> 53/UDP,53/TCP 1h
297296
...
298-
```
297+
```
299298

300299
如果您已经创建了该服务或它本应该默认创建但没有出现,参考[调试服务](https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/)获取更多信息。
301300

302301
### DNS 端点暴露出来了吗?
303302

304303
您可以使用`kubectl get endpoints`命令验证 DNS 端点是否被暴露。
305304

306-
```bash
305+
```bash
307306
$ kubectl get ep kube-dns --namespace=kube-system
308307
NAME ENDPOINTS AGE
309308
kube-dns 10.180.3.17:53,10.180.3.17:53 1h
310-
```
309+
```
311310

312311
如果您没有看到端点,查看[调试服务](https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/)文档中的端点部分。
313312

@@ -330,5 +329,4 @@ Kubernetes 1.3 版本起引入了支持多站点 Kubernetes 安装的集群联
330329
- [Configure DNS Service](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/)
331330
- [Service 和 Pod 的 DNS](/docs/concepts/services-networking/dns-pod-service/)
332331
- [自动扩容集群中的 DNS 服务](/docs/tasks/administer-cluster/dns-horizontal-autoscaling/)
333-
- [Using CoreDNS for Service Discovery](https://kubernetes.io/docs/tasks/administer-cluster/coredns/)
334-
````
332+
- [Using CoreDNS for Service Discovery](https://kubernetes.io/docs/tasks/administer-cluster/coredns/)

practice/coredns.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,34 @@
1-
# Kubernetes中CoreDNS安装实践
1+
# 安装配置CoreDNS
22

3-
CoreDNS可以在具有标准的Kube-DNS的Kubernetes集群中运行。作为* Kubernetes *的插件使用,CoreDNS将从
4-
Kubernetes集群中读取区(zone)数据。它实现了为Kubernetes的DNS服务发现定义的规范:
3+
CoreDNS可以在具有标准的Kube-DNS的Kubernetes集群中运行。作为Kubernetes 的插件使用,CoreDNS将从
4+
Kubernetes集群中读取区(zone)数据。它实现了为Kubernetes的DNS服务发现定义的规范:[Kubernetes DNS-Based Service Discovery](https://github.com/kubernetes/dns/blob/master/docs/specification.md)
55

6-
https://github.com/kubernetes/dns/blob/master/docs/specification.md
6+
## 部署CoreDNS
77

8+
部署 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)(这两个文件已经放入manifest的[coredns](/manifests/coredns)中)
89

9-
## 部署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)
10-
11-
(这两个文件已经放入manifest的[coredns](/manifests/coredns)中)
12-
13-
`deploy.sh` 是一个用于在已经运行kube-dns的集群中生成运行CoreDNS部署文件(manifest)的工具脚本。它使用
14-
'coredns.yaml.sed'文件作为模板,创建一个ConfigMap和CoreDNS的deployment, 然后更新集群中已有的kube-dns
10+
`deploy.sh` 是一个用于在已经运行kube-dns的集群中生成运行CoreDNS部署文件(manifest)的工具脚本。它使用 `coredns.yaml.sed`文件作为模板,创建一个ConfigMap和CoreDNS的deployment,然后更新集群中已有的kube-dns
1511
服务的selector使用CoreDNS的deployment。重用已有的服务并不会在服务的请求中发生冲突。
1612

17-
deploy.sh文件并不会删除kube-dns的deployment或者replication controller。如果要删除kube-dns, 你必须
18-
在部署CoreDNS后手动的删除kube-dns。
13+
`deploy.sh`文件并不会删除kube-dns的deployment或者replication controller。如果要删除kube-dns,你必须在部署CoreDNS后手动的删除kube-dns。
1914

2015
你需要仔细测试manifest文件,以确保它能够对你的集群正常运行。这依赖于你的怎样构建你的集群以及你正在运行的集群版本。
2116
对manifest文件做一些修改是有比要的。
2217

2318
在最佳的案例场景中,使用CoreDNS替换Kube-DNS只需要使用下面的两个命令:
2419

25-
~~~
20+
~~~bash
2621
$ ./deploy.sh | kubectl apply -f -
2722
$ kubectl delete --namespace=kube-system deployment kube-dns
2823
~~~
2924

3025

3126
注意:我们建议在部署CoreDNS后删除kube-dns。否则如果CoreDNS和kube-dns同时运行,服务查询可能会随机的在CoreDNS和kube-dns之间产生。
3227

33-
对于non-RBAC部署,你需要编辑生成的结果yaml文件:
34-
1. 从yaml文件的“Deployment”部分删除 `serviceAccountName: coredns`
35-
2. 删除 `ServiceAccount`, `ClusterRole`, 和 `ClusterRoleBinding` 部分
28+
对于非RBAC部署,你需要编辑生成的结果yaml文件:
29+
1. 从yaml文件的`Deployment`部分删除 `serviceAccountName: coredns`
30+
2. 删除 `ServiceAccount``ClusterRole ``ClusterRoleBinding` 部分
31+
32+
## 参考
33+
34+
- [Kubernetes DNS-Based Service Discovery](https://github.com/kubernetes/dns/blob/master/docs/specification.md)

practice/dns-installation.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# 安装配置 DNS
2+
3+
DNS 组件作为 Kubernetes 中服务注册和发现的一个必要组件,起着举足轻重的作用,是我们在安装好 Kubernetes 集群后部署的第一个容器化应用。

0 commit comments

Comments
 (0)