在管理边缘节点过程中,可能会遇到一些问题,包括接入失败和升级失败的问题。本文介绍边缘节点会遇到的常见问题和对应的解决方案。
如何处理边缘节点接入失败的问题?
当脚本执行时出现问题,请参考以下常见问题列表进行处理。若出现以下表格中不存在的问题,请收集节点诊断信息后,提交工单排查处理。关于如何收集边缘节点诊断信息,请参见如何收集ACK Edge集群节点的诊断信息?
| 接入失败信息 | 失败原因 | 处理建议 | 
| The os XXX unsupport | 当前边缘节点的系统版本不支持。 | 关于支持的边缘节点的系统列表,请参见添加边缘节点。 | 
| invalid nodeName | 节点名称不合法。 | 
 | 
| Node route overlaps with service cidr | 节点的路由表网段与集群创建时配置的Pod CIDR或Service CIDR冲突。 | 重新创建集群,请注意配置Pod CIDR与Service CIDR,需避免与边缘节点的NameServer地址以及路由表网段冲突。 | 
| response error msg: TOKEN_EXPIRED | 接入Token过期。 | 
 | 
| A node named XXX is already exist in the cluster | 集群中已存在同名的节点。 | 下线集群中的同名节点。 | 
| error run phase join-node: failed to get cluster info: failed to get cluster-info configmap, Get "https://xx.xxx.xx.xx:6443/api/v1/namespaces/kube-public/configmaps/cluster-info": dial tcp xx.xxx.xx.xx:6443: i/o timeout | 获取集群cluster-info失败。 | edgeadm接入边缘节点时需要通过该地址访问APIServer, 请检查API Server负载均衡(SLB)ACL规则是否限制了该地址的访问。 | 
| error run phase join-node: Install edge-hub failed: Copy file /tmp/edge-hub to /usr/bin/edge-hub fail: open /usr/bin/edge-hub: text file busy | 40009 | 40009 | 安装edge-hub失败,节点上已经存在edge-hub的二进制文件。 | 执行 | 
| error run phase post-check: timed out waiting for the condition | 系统组件启动失败。 | 
 | 
如何处理边缘节点升级失败的问题?
升级边缘节点池时,若未返回升级成功结果This node has been upgraded successfully,请参考以下内容排查处理。
| 升级失败信息 | 可能原因 | 处理建议 | 
| edgeadm version xxxx does not match cluster version | 升级工具版本与集群版本不匹配。 | 
 | 
| node has already been upgraded to xxx | 节点已经是升级后的目标版本。 | 如果确认节点上还有组件没有完成升级,请保留日志并提交工单处理。 | 
| kubelet target version xxxx does not match cluster version xxxx | 指定的kubelet升级的版本与集群控制面版本不匹配。 | 
 | 
| Parameter currentVersion cann't null | 使用了老版本的edgeadm。 | 
 | 
| upgrade kubelet failed at phase install, recover to previous state. error run phase upgrade: xxxx | 升级失败,且已自动回滚到之前的状态,节点状态不受影响。 | 请保留日志并提交工单处理。 | 
| upgrade kubelet failed at phase install, recover to previous state recover kubelet failed, err: xxx error run phase upgrade: xxxx | 升级失败,且自动回滚失败,节点状态会受到影响。 | 请保留日志并提交工单处理。 | 
如何收集ACK Edge集群节点的诊断信息?
当ACK Edge集群的节点出现异常时,您可以参见以下步骤收集集群节点的诊断信息,以供数据分析使用。
- 登录到ACK Edge集群的异常节点。 
- 执行如下命令,下载诊断脚本。 - curl -o /usr/local/bin/diagnose_edge_node.sh https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/diagnose/diagnose_k8s.sh
- 执行如下命令,给诊断脚本添加执行权限。 - chmod u+x /usr/local/bin/diagnose_edge_node.sh
- 执行如下命令,进入指定目录。 - cd /usr/local/bin/
- 执行如下命令,运行诊断脚本。 - ./diagnose_edge_node.sh- 预期输出如下。每次执行诊断脚本产生的诊断信息文件名称不同,本示例以 - diagnose_1578310147.tar.gz为例,具体以实际环境为准。- ...... + echo 'please get diagnose_1578310147.tar.gz for diagnostics' please get diagnose_1578310147.tar.gz for diagnostics + echo '请提交 diagnose_1578310147.tar.gz 给技术支持' 请提交 diagnose_1578310147.tar.gz 给技术支持
- 执行 - ll命令,确认存在- diagnose_1578310147.tar.gz诊断信息文件。