本文介绍使用ACK Edge集群的边缘节点时可能遇到的常见问题以及对应的解决方案。
ACK Edge组件如何区分云上节点和云下节点(边缘节点)?
ACK Edge通过节点的label alibabacloud.com/is-edge-worker来判断是否是边缘节点。
节点加入云端节点池或边缘节点池时,会自动携带is-edge-worker标签。若is-edge-worker取值为true,表示该节点为边缘节点;取值为false,则表示该节点为云上节点。
专线环境下如何接入边缘节点?
ACK Edge集群在专线环境下接入边缘节点,请注意以下要求。更多信息,请参见ACK Edge集群专线场景下的特殊配置说明。
GPU节点如何接入?
- 在接入节点前,需要先安装好GPU Driver。 
- 驱动版本相关信息,请参见ACK支持的NVIDIA驱动版本列表。 
- 生成节点接入脚本时,需配置 - gpuVersion参数。当前支持的GPU版本如下:- 系统架构 - GPU型号 - 边缘Kubernetes集群版本 - AMD64/x86_64 - Nvidia_Tesla_T4 - ≥1.16.9-aliyunedge.1 - AMD64/x86_64 - Nvidia_Tesla_P4 - ≥1.16.9-aliyunedge.1 - AMD64/x86_64 - Nvidia_Tesla_P100 - ≥1.16.9-aliyunedge.1 - AMD64/x86_64 - Nvidia_Tesla_V100 - ≥1.18.8-aliyunedge.1 - AMD64/x86_64 - Nvidia_Tesla_A10 - ≥1.20.11-aliyunedge.1 - AMD64/x86_64 - Nvidia_L40 - ≥1.26.3-aliyun.1  
- 该参数配置完成后,接入工具会自动安装nvidia-containerd-runtime,关于nvidia-containerd-runtime更多信息,请参见nvidia-containerd-runtime。 
如何处理接入脚本执行失败的问题?
当脚本执行时出现问题,请参考以下常见问题列表进行处理。若出现以下表格中不存在的问题,请收集节点诊断信息后,提交工单排查处理。关于如何收集边缘节点诊断信息,请参见如何收集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 | 系统组件启动失败。 | 
 | 
升级ACK Edge集群时,边缘节点升级失败如何处理?
升级边缘节点池时,若未返回升级成功结果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诊断信息文件。