Skip to content

Commit ecf3c80

Browse files
committed
feat: update docs content
1 parent 4d3ea57 commit ecf3c80

File tree

1 file changed

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

1 file changed

+50
-35
lines changed

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

Lines changed: 50 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -436,12 +436,12 @@ curl -k -H "Content-Type: application/json" -X PUT --data-binary @sedna.json htt
436436

437437
## 问题十六:强制删除 pod 之后部署不成功
438438

439-
因为现在 edge 的 pod 是通过创建 deployment 由 deployment 进行创建,但是通过 `kubectl delete deploy <deploy-name>` 删除 deployment 后,pod 一直卡在了 terminating 状态,于是采用了 `kubectl delete pod edgeworker-deployment-7g5hs-58dffc5cd7-b77wz --force --grace-period=0` 命令进行了删除。
440-
然后发现重新部署时候发现 assigned to edge 的 pod 都卡在 pending 状态。
439+
edge 的 pod 是由 deployment 进行创建,但是通过 `kubectl delete deploy <deploy-name>` 删除 deployment 后,pod 一直卡在了 terminating 状态,采用 `kubectl delete pod edgeworker-deployment-7g5hs-58dffc5cd7-b77wz --force --grace-period=0` 命令进行删除,
440+
重新部署时候发现 `assigned to edge` 的 pod 都卡在 `pending` 状态。
441441

442442
**解决:**
443443

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

446446
## 问题十七:删除 deployment、pod 等,容器依旧自动重启
447447

@@ -461,15 +461,17 @@ systemctl restart edgecore.service
461461

462462
**原因:**
463463

464-
- node 上的 kubelet 负责采集资源占用数据,并和预先设置的 threshold 值进行比较,如果超过 threshold 值,kubelet 会杀掉一些 Pod 来回收相关资源,[K8sg官网解读kubernetes配置资源不足处理](https://links.jianshu.com/go?to=https%3A%2F%2Fkubernetes.io%2Fdocs%2Ftasks%2Fadminister-cluster%2Fout-of-resource%2F)
464+
- node 上的 kubelet 负责采集资源占用数据,并和预先设置的 threshold 值进行比较,如果超过 threshold 值,kubelet 会杀掉一些 Pod 来回收相关资源,[K8s官网解读kubernetes配置资源不足处理](https://links.jianshu.com/go?to=https%3A%2F%2Fkubernetes.io%2Fdocs%2Ftasks%2Fadminister-cluster%2Fout-of-resource%2F)
465465

466-
- 默认启动时,node 的可用空间低于15%的时候,该节点上讲会执行 eviction 操作,由于磁盘已经达到了85%,在怎么驱逐也无法正常启动就会一直重启,Pod 状态也是 pending 中
466+
- 默认启动时,node 的可用空间低于15%的时候,该节点上讲会执行 eviction 操作,由于磁盘已经达到了85%,在怎么驱逐也无法正常启动就会一直重启,Pod 状态也是 pending 中
467467

468468
**解决:**
469469

470-
增大磁盘可用空间
470+
根本解决方案是增大磁盘可用空间
471471

472-
(临时解决:)修改配置文件增加传参数,添加此配置项`--eviction-hard=nodefs.available<5%`
472+
如果需要临时解决,可以通过修改k8s配置来更改threshold。
473+
474+
修改配置文件增加传参数,添加此配置项`--eviction-hard=nodefs.available<5%`
473475
```bash
474476
systemctl status kubelet
475477

@@ -497,71 +499,86 @@ Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml --evictio
497499
# 最后添加上--eviction-hard=nodefs.available<5%
498500
```
499501

500-
然后重启 kubelet:
502+
重启 kubelet:
501503
```bash
502504
systemctl daemon-reload
503505
systemctl restart kubelet
504506
```
505507

506-
之后可以正常部署(只是应急措施,磁盘空间需要再清理)
508+
之后可以正常部署(只是应急措施,磁盘空间需要再清理)
507509

508510
## 问题十九:执行iptables 命令时发现系统不支持--dport选项
509511

510-
执行命令:iptables -t nat -A OUTPUT -p tcp --dport 10351 -j DNAT --to $CLOUDCOREIPS:10003
511-
512-
报错信息中指出系统不支持--dport选项,这是因为iptables版本不支持。
512+
执行命令:`iptables -t nat -A OUTPUT -p tcp --dport 10351 -j DNAT --to $CLOUDCOREIPS:10003`时报错信息中指出系统不支持`--dport`选项,这是因为iptables版本不支持。
513513

514-
使用iptables -V查看版本,如果是iptables v1.8.7 (nf_tables),说明问题出在这里,因为nf_tables版本不支持--dport选项
514+
使用`iptables -V`查看版本,如果是`iptables v1.8.7 (nf_tables)`,这需要更改版本,因为nf_tables版本不支持`--dport`选项
515515

516516
**解决:**
517517

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

520526
## 问题二十:执行完keadm join再执行journalctl时报错token format错误
521527

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

524530
**解决:**
525531

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

528535
## 问题二十一:重启edgecore.service后再执行journalctl时报错mapping error
529536

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

532539
**解决:**
533540

534-
检查是不是/etc/kubeedge/config/edgecore.yaml文件内的格式有问题。yaml文件中不能用tab缩进,必需用空格。
541+
检查`/etc/kubeedge/config/edgecore.yaml`文件内的格式问题,特别注意yaml文件中不能用tab缩进,必需用空格。
535542

536543
## 问题二十二:重启edgecore.service后再执行journalctl时报错connect refuse
537544

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

540547
**解决:**
541548

542-
检查是不是因为云端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
549+
检查云端cloudcore状态:
550+
```bash
551+
# 检查cloudcore状态,确保正常运行
552+
systemctl status cloudcore
553+
# 重启cloudcore服务
554+
systemctl restart cloudcore.service
555+
# 查看报错信息
556+
journalctl -u cloudcore.service -f
557+
```
543558

544-
原因:应该是之前的记录没有清理干净(一般是占用了10002端口)
559+
此时,很有可能发现[问题四](#问题四10002-already-in-use)
545560

546-
解决:找到占用端口的进程,直接 Kill 即可
561+
**原因:** 应该是之前的记录没有清理干净(一般是占用了10002端口)。
562+
563+
**解决:** 找到占用端口的进程,直接 Kill 即可。
547564
```bash
548565
lsof -i:xxxx
549566
kill xxxxx
550567
```
551568

552569
## 问题二十三:部署metrics-service时遇到Shutting down相关问题
553570

554-
部署metrics-service过程中按照文档中修改components.yaml文件中端口号为4443,而后续metrics-service运行失败,
555-
产生Shutting down RequestHeaderAuthRequestController等相关错误
571+
部署metrics-service过程中按照文档中修改`components.yaml`文件中端口号为4443,但后续metrics-service运行失败,
572+
产生`Shutting down RequestHeaderAuthRequestController`等相关错误
556573

557574
**解决:**
558575

559-
在部署kubeedge时,metrics-service参数中暴露的端口会被自动覆盖为10250端口,components.yaml文件中后续实际服务
560-
所在的端口一致。也可以手动修改参数中的端口为10250即可
576+
在部署kubeedge时,metrics-service参数中暴露的端口会被自动覆盖为10250端口,`components.yaml`文件中的端口参数应当与后续实际服务
577+
所在的端口一致,手动修改参数中的端口为10250即可
561578

562579
## 问题二十四:169.254.96. 16:53: i/o timeout
563580

564-
集群新加入节点,KubeEdge的edgemesh以及sedna等组件会自动部署。查看lc的log会发现报错
581+
集群新加入节点,KubeEdge的edgemesh以及sedna等组件会自动部署,但查看lc的log发现报错
565582

566583
```
567584
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
@@ -572,31 +589,29 @@ client tries to connect global manager(address: gm.sedna:9000) failed, error: di
572589
由于是pod与edgemesh-agent的交互问题,首先检查该edge上的edgemesh-agent的状态,发现会是edgemesh-agent的问题。
573590
![Q24-1](/img/FAQs/Q24-1.png)
574591

575-
通过describe pod发现该pod被分配到新edge后就没有其余事件记录
592+
通过describe pod发现该pod被分配到新edge后就没有其余事件记录
576593

577594
![Q24-2](/img/FAQs/Q24-2.png)
578595

579-
可以去edge上查看信息通过`journalctl -u edgecore.service -xe`可以看到相关报错
596+
可以去edge上查看信息通过`journalctl -u edgecore.service -xe`可以看到相关报错
580597

581598
![Q24-3](/img/FAQs/Q24-3.png)
582599

583-
**原因:** docker国内无法访问,新加入的edge没有做对应配置,导致拉取不到 kubeedge/edgemesh-agent 镜像。
600+
**原因:** dockerhub无法访问,新加入的edge没有做对应配置,导致拉取不到 kubeedge/edgemesh-agent 镜像。
584601

585-
**解决:** 配置后重启docker和edgecore即可。
602+
**解决:** 配置后重启docker和edgecore即可,具体配置详见[Docker镜像源配置](/docs/developer-guide/how-to-build/docker-registry/)
586603

587604
## 问题二十五:边端join报错
588605

589606
边端执行keadm join报错。
590607

591608
**解决:**
592609

593-
检查edgecore.yaml文件
610+
检查edgecore.yaml文件
594611
```bash
595612
vim /etc/kubeedge/config/edgecore.yaml
596613
```
597614

598615
![Q25](/img/FAQs/Q25.png)
599616

600-
edgeHub中的httpServer添加云端地址,例如`https://114.212.81.11:10002`,websocket中的server删除最开始的冒号。
601-
602-
修改完后重新运行keadm join指令。
617+
edgeHub中的httpServer添加云端地址(例如`https://114.212.81.11:10002`),同时websocket中的server删除多余的`:`,修改完后重新执行`keadm join`指令。

0 commit comments

Comments
 (0)