本文介绍使用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_A100
≥1.20.11-aliyunedge.1
AMD64/x86_64
Nvidia_Tesla_A10
≥1.20.11-aliyunedge.1
AMD64/x86_64
Nvidia_L20
≥1.26.3-aliyun.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
诊断信息文件。