Skip to content

Commit c2a8a2a

Browse files
committed
feat: update docs content
1 parent 98a147e commit c2a8a2a

File tree

1 file changed

+68
-45
lines changed
  • i18n/zh/docusaurus-plugin-content-docs/current/03-getting-started/02-install-lower-layer-system

1 file changed

+68
-45
lines changed

i18n/zh/docusaurus-plugin-content-docs/current/03-getting-started/02-install-lower-layer-system/08-faqs.md

Lines changed: 68 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ custom_edit_url: null
66

77
# FAQs
88

9-
### 问题一:kube-proxy 报 iptables 问题
9+
## 问题一:kube-proxy 报 iptables 问题
1010

1111
```
1212
E0627 09:28:54.054930 1 proxier.go:1598] Failed to execute iptables-restore: exit status 1 (iptables-restore: line 86 failed ) I0627 09:28:54.054962 1 proxier.go:879] Sync failed; retrying in 30s
@@ -18,7 +18,7 @@ E0627 09:28:54.054930 1 proxier.go:1598] Failed to execute iptables-restore: exi
1818
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
1919
```
2020

21-
### 问题二:calico 和 coredns 一直处于初始化
21+
## 问题二:calico 和 coredns 一直处于初始化
2222

2323
`kubectl describe <podname>` 应该会有 failed 的报错,大致内容是跟 network 和 sandbox 相关的
2424

@@ -35,7 +35,7 @@ rm -rf /etc/cni/net.d/
3535
# 可能需要重新init一下
3636
```
3737

38-
### 问题三:metrics-server一直无法成功
38+
## 问题三:metrics-server一直无法成功
3939

4040
**原因:** master 没有加污点
4141

@@ -45,7 +45,7 @@ kubectl taint nodes --all node-role.kubernetes.io/master node-role.kubernetes.io
4545
```
4646

4747

48-
### 问题四:10002 already in use
48+
## 问题四:10002 already in use
4949

5050
`journalctl -u cloudcore.service -xe` 时看到 xxx already in use
5151

@@ -57,7 +57,7 @@ lsof -i:xxxx
5757
kill xxxxx
5858
```
5959

60-
### 问题五:edgecore 符号链接已存在
60+
## 问题五:edgecore 符号链接已存在
6161

6262
```
6363
execute keadm command failed: failed to exec 'bash -c sudo ln /etc/kubeedge/edgecore.service /etc/systemd/system/edgecore.service && sudo systemctl daemon-reload && sudo systemctl enable edgecore && sudo systemctl start edgecore', err: ln: failed to create hard link '/etc/systemd/system/edgecore.service': File exists
@@ -71,7 +71,7 @@ execute keadm command failed: failed to exec 'bash -c sudo ln /etc/kubeedge/edg
7171
sudo rm /etc/systemd/system/edgecore.service
7272
```
7373

74-
### 问题六:缺少 TLSStreamCertFile
74+
## 问题六:缺少 TLSStreamCertFile
7575

7676
```bash
7777
TLSStreamPrivateKeyFile: Invalid value: "/etc/kubeedge/certs/stream.key": TLSStreamPrivateKeyFile not exist
@@ -85,7 +85,7 @@ sudo rm /etc/systemd/system/edgecore.service
8585

8686
查看 `/etc/kubeedge` 下是否有 `certgen.sh` 并且 `bash certgen.sh stream`
8787

88-
### 问题七:edgemesh 的 log 边边互联成功,云边无法连接
88+
## 问题七:edgemesh 的 log 边边互联成功,云边无法连接
8989

9090
**排查:**
9191

@@ -119,7 +119,7 @@ b. 另外,节点名称不是服务器名称,是k8s node name,请用kubectl
119119

120120
![Q7](/img/FAQs/Q7.png)
121121

122-
### 问题八:master 的gpu 存在但是找不到 gpu 资源
122+
## 问题八:master 的gpu 存在但是找不到 gpu 资源
123123

124124
主要针对的是服务器的情况,可以使用 `nvidia-smi` 查看显卡情况。
125125

@@ -149,7 +149,7 @@ b. 另外,节点名称不是服务器名称,是k8s node name,请用kubectl
149149
150150
```
151151

152-
### 问题九:jeston 的 gpu 存在但是找不到 gpu 资源
152+
## 问题九:jeston 的 gpu 存在但是找不到 gpu 资源
153153

154154
理论上 `k8s-device-plugin` 已经支持了 tegra 即 jetson 系列板子,会在查看 GPU 之前判断是否是 tegra 架构,如果是则采用 tegra 下查看 GPU 的方式(原因在 [[#GPU 支持]]里 quote 过了 ),但是很奇怪的是明明是 tegra 的架构却没有检测到:
155155

@@ -196,7 +196,7 @@ sudo apt-get update
196196
sudo apt-get install -y nvidia-container-toolkit
197197
```
198198

199-
### 问题十:lc127.0.0. 53:53 no such host/connection refused
199+
## 问题十:lc127.0.0. 53:53 no such host/connection refused
200200

201201
在安装Sedna阶段,检查正确性时报错lc127.0.0. 53:53 no such host/connection refused
202202

@@ -215,7 +215,7 @@ sudo apt-get install -y nvidia-container-toolkit
215215
(3)在这之后,如果是边端上的pod出问题,就要重装sedna,先delete再create。
216216

217217

218-
### 问题十一:169.254.96.16:no such host
218+
## 问题十一:169.254.96.16:no such host
219219

220220
检查 edgemesh 的配置是否正确:
221221

@@ -224,7 +224,7 @@ sudo apt-get install -y nvidia-container-toolkit
224224

225225

226226

227-
### 问题十二: `kubectl logs <pod-name>` 超时
227+
## 问题十二: `kubectl logs <pod-name>` 超时
228228

229229
![Q12-1](/img/FAQs/Q12-1.png)
230230

@@ -238,15 +238,15 @@ sudo apt-get install -y nvidia-container-toolkit
238238

239239

240240

241-
### 问题十三: `kubectl logs <pod-name>` 卡住
241+
## 问题十三: `kubectl logs <pod-name>` 卡住
242242

243243
**原因:** 可能由于之前 `kubectl logs` 时未结束就 ctrl+c 结束了导致后续卡住
244244

245245
**解决:** 重启 edgecore/cloudcore `systemctl restart edgecore.service`
246246

247247

248248

249-
### 问题十四:CloudCore报certficate错误
249+
## 问题十四:CloudCore报certficate错误
250250

251251
![Q14](/img/FAQs/Q14.png)
252252

@@ -255,27 +255,36 @@ sudo apt-get install -y nvidia-container-toolkit
255255
**解决:**边端用新的 token 连接就好
256256

257257

258-
### 问题十五:删除命名空间卡在 terminating
258+
## 问题十五:删除命名空间卡在 terminating
259259

260-
**方法一**,但是没啥用,依旧卡住
260+
**方法一** (很大可能不起作用)
261261

262262
```bash
263263
kubectl delete ns sedna --force --grace-period=0
264264
```
265265

266266
**方法二**
267267

268+
开启一个代理终端:
268269
```bash
269-
开启一个代理终端
270-
$ kubectl proxy
270+
kubectl proxy
271+
271272
Starting to serve on 127.0.0.1:8001
273+
```
274+
275+
再开启一个操作终端:
276+
```bash
277+
# 将test namespace的配置文件输出保存
278+
kubectl get ns sedna -o json > sedna.json
279+
# 删除spec及status部分的内容还有metadata字段后的","号,切记!
280+
```
281+
282+
`sedna.json`中剩下内容大致如下:
283+
284+
<details>
272285

273-
再开启一个操作终端
274-
将test namespace的配置文件输出保存
275-
$ kubectl get ns sedna -o json > sedna.json
276-
删除spec及status部分的内容还有metadata字段后的","号,切记!
277-
剩下内容大致如下
278-
guest@cloud:~/yby$ cat sedna.json
286+
287+
```json
279288
{
280289
"apiVersion": "v1",
281290
"kind": "Namespace",
@@ -355,10 +364,23 @@ guest@cloud:~/yby$ cat sedna.json
355364
"uid": "99cb8afb-a4c1-45e6-960d-ff1b4894773d"
356365
}
357366
}
367+
```
368+
369+
</details>
370+
371+
调用接口删除:
372+
373+
<details>
374+
375+
<summary>
358376

377+
```bash
378+
curl -k -H "Content-Type: application/json" -X PUT --data-binary @sedna.json http://127.0.0.1:8001/api/v1/namespaces/sedna/finalize
379+
```
359380

360-
调接口删除
361-
# curl -k -H "Content-Type: application/json" -X PUT --data-binary @sedna.json http://127.0.0.1:8001/api/v1/namespaces/sedna/finalize
381+
</summary>
382+
383+
```bash
362384
{
363385
"kind": "Namespace",
364386
"apiVersion": "v1",
@@ -423,10 +445,10 @@ guest@cloud:~/yby$ cat sedna.json
423445
]
424446
}
425447
}
426-
427448
```
449+
</details>
428450

429-
### 问题十六:强制删除 pod 之后部署不成功
451+
## 问题十六:强制删除 pod 之后部署不成功
430452

431453
因为现在 edge 的 pod 是通过创建 deployment 由 deployment 进行创建,但是通过 `kubectl delete deploy <deploy-name>` 删除 deployment 后,pod 一直卡在了 terminating 状态,于是采用了 `kubectl delete pod edgeworker-deployment-7g5hs-58dffc5cd7-b77wz --force --grace-period=0` 命令进行了删除。
432454
然后发现重新部署时候发现 assigned to edge 的 pod 都卡在 pending 状态。
@@ -435,7 +457,7 @@ guest@cloud:~/yby$ cat sedna.json
435457

436458
因为--force 是不会实际终止运行的,所以本身原来的 docker 可能还在运行,现在的做法是手动去对应的边缘节点上删除对应的容器(包括 pause,关于 pause 可以看这篇文章[大白话 K8S(03):从 Pause 容器理解 Pod 的本质 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/464712164)),然后重启 edgecore: `systemctl restart edgecore.service`
437459

438-
### 问题十七:删除 deployment、pod 等,容器依旧自动重启
460+
## 问题十七:删除 deployment、pod 等,容器依旧自动重启
439461

440462
```
441463
journalctl -u edgecore.service -f
@@ -449,7 +471,7 @@ guest@cloud:~/yby$ cat sedna.json
449471
systemctl restart edgecore.service
450472
```
451473

452-
### 问题十八:大面积 Evicted(disk pressure)
474+
## 问题十八:大面积 Evicted(disk pressure)
453475

454476
**原因:**
455477

@@ -497,7 +519,7 @@ systemctl restart kubelet
497519

498520
之后可以正常部署(只是应急措施,磁盘空间需要再清理)
499521

500-
### 问题十九:执行iptables 命令时发现系统不支持--dport选项
522+
## 问题十九:执行iptables 命令时发现系统不支持--dport选项
501523

502524
执行命令:iptables -t nat -A OUTPUT -p tcp --dport 10351 -j DNAT --to $CLOUDCOREIPS:10003
503525

@@ -509,58 +531,57 @@ systemctl restart kubelet
509531

510532
此时,使用sudo update-alternatives --config iptables命令可以切换版本,执行此命令会提供3个可供选择的版本,其中编号为1的就是legacy版本(必须用sudo权限才能切换成功)。切换成功后再在root模式下执行 iptables -t nat -A OUTPUT -p tcp --dport 10351 -j DNAT --to $CLOUDCOREIPS:10003,理想状态下无输出。
511533

512-
### 问题二十:执行完keadm join再执行journalctl时报错token format错误
534+
## 问题二十:执行完keadm join再执行journalctl时报错token format错误
513535

514536
执行命令:keadm join --cloudcore-ipport=114.212.81.11:10000 --kubeedge-version=1.9.2 --token=……之后,再执行journalctl -u edegecore.service -f命令后,报错信息指出token format有问题。
515537

516538
**解决:**
517539

518540
此时要么是因为cloudcore.service重启后token变化导致keadm join中的token过时,要么是因为执行keadm join的时候token输入的不对。此时,首先在云端重新获取正确的token,然后在边端从keadm reset开始重新执行一系列操作。
519541

520-
### 问题二十一:重启edgecore.service后再执行journalctl时报错mapping error
542+
## 问题二十一:重启edgecore.service后再执行journalctl时报错mapping error
521543

522544
在执行EdgeMesh启动阶段,修改/etc/kubeedge/config/edgecore.yaml文件,再用systemctl restart edgecore.service重启服务,然后再执行journalctl -u edegecore.service -f命令后,报错信息指出当前存在mapping error,以及yaml无法转化为json。
523545

524546
**解决:**
525547

526548
检查是不是/etc/kubeedge/config/edgecore.yaml文件内的格式有问题。yaml文件中不能用tab缩进,必需用空格。
527549

528-
### 问题二十二:重启edgecore.service后再执行journalctl时报错connect refuse
550+
## 问题二十二:重启edgecore.service后再执行journalctl时报错connect refuse
529551

530552
在执行EdgeMesh启动阶段,修改/etc/kubeedge/config/edgecore.yaml文件,再用systemctl restart edgecore.service重启服务,然后再执行journalctl -u edegecore.service -f命令后,报错信息指出connect refuse,云端拒绝通信。
531553

532554
**解决:**
533555

534-
检查是不是因为云端cloudcore有问题。首先用systemctl status cloudcore查看云端状态,确保其正常运行;然后用systemctl restart cloudcore.service重启服务,并在重启后journalctl -u cloudcore.service -f查看报错信息。此时,很有可能发现问题四:journalclt -u cloudcore.service -xe 时看到 xxx already in use
556+
检查是不是因为云端cloudcore有问题。首先用systemctl status cloudcore查看云端状态,确保其正常运行;然后用systemctl restart cloudcore.service重启服务,并在重启后journalctl -u cloudcore.service -f查看报错信息。此时,很有可能发现[问题四](#问题四10002-already-in-use):journalclt -u cloudcore.service -xe 时看到 xxx already in use
535557

536558
原因:应该是之前的记录没有清理干净(一般是占用了10002端口)
559+
537560
解决:找到占用端口的进程,直接 Kill 即可
561+
```bash
538562
lsof -i:xxxx
539563
kill xxxxx
564+
```
540565

541-
### 问题二十三:部署metrics-service时遇到Shutting down相关问题
542-
543-
#### 问题描述
566+
## 问题二十三:部署metrics-service时遇到Shutting down相关问题
544567

545568
部署metrics-service过程中按照文档中修改components.yaml文件中端口号为4443,而后续metrics-service运行失败,
546569
产生Shutting down RequestHeaderAuthRequestController等相关错误。
547570

548-
#### 解决方法
571+
**解决:**
549572

550573
在部署kubeedge时,metrics-service参数中暴露的端口会被自动覆盖为10250端口,components.yaml文件中后续实际服务
551574
所在的端口一致。也可以手动修改参数中的端口为10250即可。
552575

553576
### 问题二十四:169.254.96. 16:53: i/o timeout
554577

555-
#### 问题描述
556-
557578
集群新加入节点,KubeEdge的edgemesh以及sedna等组件会自动部署。查看lc的log会发现报错
558579

559580
```
560581
client tries to connect global manager(address: gm.sedna:9000) failed, error: dial tcp: lookup gm.sedna on 169.254.96.16:53: read udp 172.17.0.3:49991->169.254.96.16:53: i/o timeout
561582
```
562583

563-
#### 解决方法
584+
**解决:**
564585

565586
由于是pod与edgemesh-agent的交互问题,首先检查该edge上的edgemesh-agent的状态,发现会是edgemesh-agent的问题。
566587
![Q24-1](/img/FAQs/Q24-1.png)
@@ -573,11 +594,13 @@ client tries to connect global manager(address: gm.sedna:9000) failed, error: di
573594

574595
![Q24-3](/img/FAQs/Q24-3.png)
575596

576-
原因:docker国内无法访问,新加入的edge没有做对应配置,导致拉取不到 kubeedge/edgemesh-agent 镜像。配置后重启docker和edgecore即可。
597+
**原因:** docker国内无法访问,新加入的edge没有做对应配置,导致拉取不到 kubeedge/edgemesh-agent 镜像。
598+
599+
**解决:** 配置后重启docker和edgecore即可。
577600

578601
### 问题二十五:边端join报错
579602

580-
边端执行keadm join报错
603+
边端执行keadm join报错
581604

582605
**解决:**
583606

@@ -588,6 +611,6 @@ vim /etc/kubeedge/config/edgecore.yaml
588611

589612
![Q25](/img/FAQs/Q25.png)
590613

591-
edgeHub中的httpServer添加云端地址,例如https://114.212.81.11:10002 ,websocket中的server删除最开始的冒号
614+
edgeHub中的httpServer添加云端地址,例如https://114.212.81.11:10002,websocket中的server删除最开始的冒号
592615

593616
修改完后重新运行keadm join指令。

0 commit comments

Comments
 (0)