在管理邊緣節點過程中,可能會遇到一些問題,包括接入失敗和升級失敗的問題。本文介紹邊緣節點會遇到的常見問題和對應的解決方案。
如何處理邊緣節點接入失敗的問題?
當指令碼執行時出現問題,請參考以下常見問題列表進行處理。若出現以下表格中不存在的問題,請收集節點診斷資訊後,提交工單排查處理。關於如何收集邊緣節點診斷資訊,請參見如何收集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
診斷資訊檔。