诊断边缘节点问题

在管理边缘节点过程中,可能会遇到一些问题,包括接入失败和升级失败的问题。本文介绍边缘节点会遇到的常见问题和对应的解决方案。

如何处理边缘节点接入失败的问题?

当脚本执行时出现问题,请参考以下常见问题列表进行处理。若出现以下表格中不存在的问题,请收集节点诊断信息后,提交工单排查处理。关于如何收集边缘节点诊断信息,请参见如何收集ACK Edge集群节点的诊断信息?

接入失败信息

失败原因

处理建议

The os XXX unsupport

当前边缘节点的系统版本不支持。

关于支持的边缘节点的系统列表,请参见添加边缘节点

invalid nodeName

节点名称不合法。

  • 节点名称只能由英文小写字母、中划线(-)和半角句号(.)组成。

  • 节点名称不能超过253个字符。

  • 节点名称不能以localhost开头。

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的二进制文件。

执行edgeadm reset命令清理节点后重新接入。

error run phase post-check: timed out waiting for the condition

系统组件启动失败。

  1. 请重新下载edgeadm工具,并执行edgeadm reset后重新接入,确保您使用的是最新版本的edgeadm。

  2. 检查边缘节点是否能正常访问依赖的公网地址。相关地址列表请参见边缘节点接入访问域名和IP路由网段配置

  3. 收集边缘节点诊断信息,并提交工单排查,关于如何收集诊断信息,请参见如何收集ACK Edge集群节点的诊断信息?

如何处理边缘节点升级失败的问题?

升级边缘节点池时,若未返回升级成功结果This node has been upgraded successfully,请参考以下内容排查处理。

升级失败信息

可能原因

处理建议

edgeadm version xxxx does not match cluster version

升级工具版本与集群版本不匹配。

  1. 检查集群控制面是否已经完成升级。

  2. 检查TARGET_CLUSTER_VERSION参数是否填写正确。

node has already been upgraded to xxx

节点已经是升级后的目标版本。

如果确认节点上还有组件没有完成升级,请保留日志并提交工单处理。

kubelet target version xxxx does not match cluster version xxxx

指定的kubelet升级的版本与集群控制面版本不匹配。

  1. 如果指定了kubelet-version参数,请检查该参数是否填写正确(与集群控制面版本一致)。

  2. 如果没有指定该参数,请提交工单处理。

Parameter currentVersion cann't null

使用了老版本的edgeadm。

  1. 请检查edgeadm版本是否为最新版本。

  2. 当前支持的集群升级范围为1.18升级到1.20版本、1.20升级到1.22版本。

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集群的节点出现异常时,您可以参见以下步骤收集集群节点的诊断信息,以供数据分析使用。

  1. 登录到ACK Edge集群的异常节点。

  2. 执行如下命令,下载诊断脚本。

    curl -o /usr/local/bin/diagnose_edge_node.sh https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/diagnose/diagnose_k8s.sh
  3. 执行如下命令,给诊断脚本添加执行权限。

    chmod u+x /usr/local/bin/diagnose_edge_node.sh
  4. 执行如下命令,进入指定目录。

    cd /usr/local/bin/
  5. 执行如下命令,运行诊断脚本。

    ./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 给技术支持
  6. 执行ll命令,确认存在diagnose_1578310147.tar.gz诊断信息文件。