在管理边缘节点过程中,可能会遇到一些问题,包括接入失败和升级失败的问题。本文介绍边缘节点会遇到的常见问题和对应的解决方案。
如何处理边缘节点接入失败的问题?
当脚本执行时出现问题,请参考以下常见问题列表进行处理。若出现以下表格中不存在的问题,请收集节点诊断信息后,提交工单排查处理。关于如何收集边缘节点诊断信息,请参见如何收集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
诊断信息文件。